mesa: Changes to 'ubuntu'
debian/changelog | 5 -
debian/patches/119_r600g_gnome_shell_rendering_fix.diff | 69 ++++++++++++++++
debian/patches/series | 1
3 files changed, 74 insertions(+), 1 deletion(-)
New commits:
commit 0b1af3ec5bf176931fc4f6d7f9dca8301bc35e96
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date: Thu Aug 4 16:25:43 2011 +1000
Cherry-pick gnome-shell rendering-corruption fix for r600g
diff --git a/debian/changelog b/debian/changelog
index b9d7085..49e7a70 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -68,8 +68,11 @@ mesa (7.11-0ubuntu1) UNRELEASED; urgency=low
* debian/clean:
- Generate xmlpool pot file and clean up other po files for
pkgbinarymangler's benefit (LP: #410264).
+ * debian/patches/119_r600g_gnome_shell_rendering_fix.diff:
+ - Cherry pick upstream commit fixing rendering corruption in gnome-shell
+ (and therefore likely Unity as well).
- -- Christopher James Halse Rogers <raof@ubuntu.com> Tue, 19 Jul 2011 09:15:22 +1000
+ -- Christopher James Halse Rogers <raof@ubuntu.com> Thu, 04 Aug 2011 16:25:08 +1000
mesa (7.11-1) UNRELEASED; urgency=low
diff --git a/debian/patches/119_r600g_gnome_shell_rendering_fix.diff b/debian/patches/119_r600g_gnome_shell_rendering_fix.diff
new file mode 100644
index 0000000..7e404e7
--- /dev/null
+++ b/debian/patches/119_r600g_gnome_shell_rendering_fix.diff
@@ -0,0 +1,69 @@
+commit 2bde0cc95d8db10b6d2c6689ca39c196a81248b0
+Author: Vadim Girlin <vadimgirlin@gmail.com>
+Date: Wed Aug 3 15:35:02 2011 +0400
+
+ r600g: take into account force_add_cf in pops
+
+ When we have two ENDIFs in a row, we shouldn't modify the pop_count
+ for the same alu clause twice.
+
+ Fixes https://bugs.freedesktop.org/show_bug.cgi?id=38163
+
+ Note: this is a candidate for the 7.11 branch.
+
+ Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+
+diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
+index fc56656..c55cdd7 100644
+--- a/src/gallium/drivers/r600/r600_shader.c
++++ b/src/gallium/drivers/r600/r600_shader.c
+@@ -2932,25 +2932,34 @@ static int emit_logic_pred(struct r600_shader_ctx *ctx, int opcode)
+
+ static int pops(struct r600_shader_ctx *ctx, int pops)
+ {
+- int alu_pop = 3;
+- if (ctx->bc->cf_last) {
+- if (ctx->bc->cf_last->inst == CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU) << 3)
+- alu_pop = 0;
+- else if (ctx->bc->cf_last->inst == CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_POP_AFTER) << 3)
+- alu_pop = 1;
+- }
+- alu_pop += pops;
+- if (alu_pop == 1) {
+- ctx->bc->cf_last->inst = CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_POP_AFTER) << 3;
+- ctx->bc->force_add_cf = 1;
+- } else if (alu_pop == 2) {
+- ctx->bc->cf_last->inst = CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_POP2_AFTER) << 3;
+- ctx->bc->force_add_cf = 1;
+- } else {
++ unsigned force_pop = ctx->bc->force_add_cf;
++
++ if (!force_pop) {
++ int alu_pop = 3;
++ if (ctx->bc->cf_last) {
++ if (ctx->bc->cf_last->inst == CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU) << 3)
++ alu_pop = 0;
++ else if (ctx->bc->cf_last->inst == CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_POP_AFTER) << 3)
++ alu_pop = 1;
++ }
++ alu_pop += pops;
++ if (alu_pop == 1) {
++ ctx->bc->cf_last->inst = CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_POP_AFTER) << 3;
++ ctx->bc->force_add_cf = 1;
++ } else if (alu_pop == 2) {
++ ctx->bc->cf_last->inst = CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_POP2_AFTER) << 3;
++ ctx->bc->force_add_cf = 1;
++ } else {
++ force_pop = 1;
++ }
++ }
++
++ if (force_pop) {
+ r600_bc_add_cfinst(ctx->bc, CTX_INST(V_SQ_CF_WORD1_SQ_CF_INST_POP));
+ ctx->bc->cf_last->pop_count = pops;
+ ctx->bc->cf_last->cf_addr = ctx->bc->cf_last->id + 2;
+ }
++
+ return 0;
+ }
+
diff --git a/debian/patches/series b/debian/patches/series
index b7fe03d..ec47260 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -16,3 +16,4 @@
116_use_shared_galliumcore.diff
117_handle_dri2connect_errors_when_indirect.diff
118_fix_24bpp_software_renering.diff
+119_r600g_gnome_shell_rendering_fix.diff
Reply to: