diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2016-05-13 16:41:13 -0700 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2016-05-14 00:18:37 -0700 |
commit | 59156b2e96315910f1e929c14c5b25ce88f75911 (patch) | |
tree | a69391012a086db66ffc5d77b9d6008a57ab72d5 /src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | |
parent | 9f8867d8779c7f402b9614ec334924aafc58cd64 (diff) | |
download | external_mesa3d-59156b2e96315910f1e929c14c5b25ce88f75911.zip external_mesa3d-59156b2e96315910f1e929c14c5b25ce88f75911.tar.gz external_mesa3d-59156b2e96315910f1e929c14c5b25ce88f75911.tar.bz2 |
i965: Fix undefined df bits in brw_reg comparisons.
Commit 5310bca024f77da40ea6f4c275455f9cb0528f9e added a new "double df"
field to the brw_reg struct, adding an extra 4 bytes of data that isn't
usually initialized (or may contain irrelevant garbage if the struct is
mutated). This means that it's no longer safe to memcmp().
Instead, add a brw_regs_equal() function which ignores the extra df bits
unless they matter. To keep the implementation cheap, we wrap the first
set of fields in a union/struct so that we can use a single DWord
comparison.
v2: Drop unnecessary casts (caught by Francisco Jerez).
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vec4_generator.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp index 4b44c3a..baf4422 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp @@ -295,7 +295,7 @@ generate_tex(struct brw_codegen *p, brw_set_default_mask_control(p, BRW_MASK_DISABLE); brw_set_default_access_mode(p, BRW_ALIGN_1); - if (memcmp(&surface_reg, &sampler_reg, sizeof(surface_reg)) == 0) { + if (brw_regs_equal(&surface_reg, &sampler_reg)) { brw_MUL(p, addr, sampler_reg, brw_imm_uw(0x101)); } else { brw_SHL(p, addr, sampler_reg, brw_imm_ud(8)); |