Environment: Mesa: (master 934e41c0b31cffa4efc08f61cff2389e3149b3f3) Ubuntu 14.04 Commit 2881b12 "i965: Use ~0 to represent true on all generations" causes regressions on 43 DrawElments tests (see list below). All appear to be related to boolean conversions. dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar.int_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar.uint_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_vector.int_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_vector.int_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_vector.int_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_vector.uint_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_vector.uint_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.scalar_to_vector.uint_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_scalar.ivec2_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_scalar.ivec3_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_scalar.ivec4_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_scalar.uvec2_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_scalar.uvec3_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_scalar.uvec4_to_bool_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.ivec4_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.ivec4_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.ivec4_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.uvec4_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.uvec4_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.uvec4_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.ivec3_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.ivec3_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.uvec3_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.uvec3_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.ivec2_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_to_vector.uvec2_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_int_int_int_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.uint_uint_uint_uint_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.bool_float_int_bool_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.vec2_ivec2_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_ivec2_int_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.bool_float_ivec2_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.float_uvec3_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_uvec2_bool_to_bvec4_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_int_int_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.uint_uint_uint_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.bool_float_int_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.bvec2_int_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.bool_ivec2_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.float_uvec2_to_bvec3_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_int_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.uint_uint_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.float_int_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_bool_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.int_uint_to_bvec2_vertex dEQP-GLES3.functional.shaders.conversions.vector_combine.uint_float_to_bvec2_vertex Analysis: Bisect shows 2881b123d00562fee8b7d2b4f7825f89a73e0d9f is the first bad commit. Author: Matt Turner <mattst88@gmail.com> Date: Tue Dec 2 12:28:13 2014 -0800 i965: Use ~0 to represent true on all generations. Jason realized that we could fix the result of the CMP instruction on Gen <= 5 by doing -(result & 1). Also do the resolves in the vec4 backend before use, rather than when the bool was created. The FS does this and it saves some unnecessary resolves. On Ironlake: total instructions in shared programs: 4289762 -> 4287277 (-0.06%) instructions in affected programs: 619430 -> 616945 (-0.40%) Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> Steps to reproduce: # ./deqp-gles3 --deqp-case=<test> for each of the above listed tests.
These tests also regressed due to commit 2881b12: dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex.58 dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex.68
Strange. Presumably you're testing on SNB or newer, and that commit should have affected only older generations. Could you run one of the tests before and after commit 2881b12 with INTEL_DEBUG=vs,fs and attach the output here?
Actually, I saw the failures on IVB (i7-3770K) and Haswell (i7-4770K). I'll collect the debug info you requested.
Created attachment 112031 [details] Mesa debug output before 2881b12
Created attachment 112032 [details] dEQP output before 2881b12
Created attachment 112033 [details] Mesa debug output after 2881b12
Created attachment 112035 [details] dEQP output after 2881b12
Oh yeah: (assign (x) (var_ref packed:v_out0) (expression float b2f (expression bool i2b (expression int f2i (var_ref a_in0) ) ) ) ) -cmp.nz.f0(8) g6<1>.xD g7<4,4,1>.xD 0F +and(8) g6<1>.xD g7<4,4,1>.xD 1D and(8) g4<1>.xD g6<4,4,1>.xD 0x3f800000UD Those are definitely not the same. I'll investigate more tomorrow.
*** Bug 89313 has been marked as a duplicate of this bug. ***
Wow. I just simply broke i2b in the vec4 backend in commit 2881b123d from the looks of it. The fix is easy, but unfortunately when testing some of these tests assert fail in our SSSE3 code in rgba8_copy() because of unaligned dst. I'll send a patch shortly for the failure that is my fault.
Patch sent to the mailing list.
Should be fixed by: commit 43ef2657a08f850c5756f28520f2cbe506807f24 Author: Matt Turner <mattst88@gmail.com> Date: Thu Feb 26 22:49:47 2015 -0800 i965/vec4: Fix implementation of i2b.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.