diff options
author | Ville Syrjälä <[email protected]> | 2017-06-05 14:01:58 +0300 |
---|---|---|
committer | Ville Syrjälä <[email protected]> | 2017-06-14 18:22:52 +0300 |
commit | c1eedb43f32f6a3733f26e7918eb028f68bd60a4 (patch) | |
tree | 20a52a806676c0e1644a7345635d5262ee169cfe | |
parent | 5f8b654b47af12f8e583df7911581379eba549e2 (diff) |
i915: Fix wpos_tex vs. -1 comparison
wpos_tex used to be a GLuint so assigning -1 to it and
later comparing with -1 worked correctly, but commit
c349031c27b7 ("i915: Fix texcoord vs. varying collision in
fragment programs") changed wpos_tex to uint8_t and hence
broke the comparison. To fix this define a more explicit
invalid value for wpos_tex.
gcc warns us:
i915_fragprog.c:1255:57: warning: comparison is always true due to limited range of data type [-Wtype-limits]
if (inputsRead & VARYING_BITS_TEX_ANY || p->wpos_tex != -1) {
^
And clang says:
i915_fragprog.c:1255:57: warning: comparison of constant -1 with expression of type 'uint8_t' (aka 'unsigned char') is always true [-Wtautological-constant-out-of-range-compare]
if (inputsRead & VARYING_BITS_TEX_ANY || p->wpos_tex != -1) {
~~~~~~~~~~~ ^ ~~
Cc: Chih-Wei Huang <[email protected]>
Cc: Eric Anholt <[email protected]>
Cc: Ian Romanick <[email protected]>
Cc: [email protected]
Fixes: c349031c27b7 ("i915: Fix texcoord vs. varying collision in fragment programs")
Signed-off-by: Ville Syrjälä <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_context.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_fragprog.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_program.c | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 2046d78471d..f95b531a413 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -116,6 +116,7 @@ enum { }; #define I915_TEX_UNITS 8 +#define I915_WPOS_TEX_INVALID 0xff #define I915_MAX_CONSTANT 32 #define I915_CONSTANT_SIZE (2+(4*I915_MAX_CONSTANT)) diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index 0fad2c34c34..e19ca60bd33 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -1063,7 +1063,7 @@ check_wpos(struct i915_fragment_program *p) GLint i; unsigned unit = 0; - p->wpos_tex = -1; + p->wpos_tex = I915_WPOS_TEX_INVALID; if ((inputs & VARYING_BIT_POS) == 0) return; @@ -1252,7 +1252,7 @@ i915ValidateFragmentProgram(struct i915_context *i915) intel->coloroffset = 0; intel->specoffset = 0; - if (inputsRead & VARYING_BITS_TEX_ANY || p->wpos_tex != -1) { + if (inputsRead & VARYING_BITS_TEX_ANY || p->wpos_tex != I915_WPOS_TEX_INVALID) { EMIT_ATTR(_TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, S4_VFMT_XYZW, 16); } else { diff --git a/src/mesa/drivers/dri/i915/i915_program.c b/src/mesa/drivers/dri/i915/i915_program.c index a8f693f71af..20a47804249 100644 --- a/src/mesa/drivers/dri/i915/i915_program.c +++ b/src/mesa/drivers/dri/i915/i915_program.c @@ -482,7 +482,7 @@ i915_init_program(struct i915_context *i915, struct i915_fragment_program *p) p->decl_t = 0; p->temp_flag = 0xffff000; p->utemp_flag = ~0x7; - p->wpos_tex = -1; + p->wpos_tex = I915_WPOS_TEX_INVALID; p->depth_written = 0; p->nr_params = 0; |