summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-10-29 20:03:37 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-10-29 20:10:28 +0100
commit17ba07a7befc7f442ae1c917a087ac026516d886 (patch)
tree763927bce4925a4c942664c0b7f026da9450e558
parent4835fe5b2e19ac456773565399f334845f7442c0 (diff)
sna/gen3: Set the src flags for fill
A regression from c2040fb8e62076d87f7a5b407505ee3f3482945e (sna: Remove the memset(0) of the fill op) left the flags for the source channel uninitalised leaving the shader construction undefined and causing visual glitches. Reported-by: Paul Neumann <paul104x@yahoo.de> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42367 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/gen3_render.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index a581c8a2..efd5d7a2 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -3738,9 +3738,13 @@ gen3_render_fill_boxes(struct sna *sna,
tmp.dst.bo = dst_bo;
tmp.floats_per_vertex = 2;
tmp.floats_per_rect = 6;
+ tmp.rb_reversed = 0;
tmp.src.u.gen3.type = op == PictOpClear ? SHADER_ZERO : SHADER_CONSTANT;
tmp.src.u.gen3.mode = pixel;
+ tmp.src.is_affine = 0;
+ tmp.src.alpha_fixup = 0;
+ tmp.src.rb_reversed = 0;
tmp.mask.u.gen3.type = SHADER_NONE;
tmp.u.gen3.num_constants = 0;
@@ -3891,10 +3895,14 @@ gen3_render_fill(struct sna *sna, uint8_t alu,
tmp->base.floats_per_rect = 6;
tmp->base.need_magic_ca_pass = 0;
tmp->base.has_component_alpha = 0;
+ tmp->base.rb_reversed = 0;
tmp->base.src.u.gen3.type = SHADER_CONSTANT;
tmp->base.src.u.gen3.mode =
sna_rgba_for_color(color, dst->drawable.depth);
+ tmp->base.src.is_affine = 0;
+ tmp->base.src.alpha_fixup = 0;
+ tmp->base.src.rb_reversed = 0;
tmp->base.mask.u.gen3.type = SHADER_NONE;
tmp->base.u.gen3.num_constants = 0;
@@ -3967,6 +3975,9 @@ gen3_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo,
tmp.dst.bo = bo;
tmp.floats_per_vertex = 2;
tmp.floats_per_rect = 6;
+ tmp.need_magic_ca_pass = 0;
+ tmp.has_component_alpha = 0;
+ tmp.rb_reversed = 0;
color = sna_rgba_for_color(color, dst->drawable.depth);
if (color == 0)
@@ -3978,6 +3989,9 @@ gen3_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo,
else
tmp.src.u.gen3.type = SHADER_CONSTANT;
tmp.src.u.gen3.mode = color;
+ tmp.src.is_affine = 0;
+ tmp.src.alpha_fixup = 0;
+ tmp.src.rb_reversed = 0;
tmp.mask.u.gen3.type = SHADER_NONE;
tmp.u.gen3.num_constants = 0;