summaryrefslogtreecommitdiffstats
path: root/src/glsl/Makefile.sources
diff options
context:
space:
mode:
authorSamuel Iglesias Gonsalvez <siglesias@igalia.com>2015-02-09 10:36:36 +0100
committerSamuel Iglesias Gonsalvez <siglesias@igalia.com>2015-05-05 12:50:22 +0200
commit08a4639e81f20954b2d78b0ff5bc268731372570 (patch)
treea43e1e23ca2bca01175d5c82970ac9617b837fb3 /src/glsl/Makefile.sources
parent4ab8d59a23e0142239dad66155b1a7a149755325 (diff)
downloadexternal_mesa3d-08a4639e81f20954b2d78b0ff5bc268731372570.zip
external_mesa3d-08a4639e81f20954b2d78b0ff5bc268731372570.tar.gz
external_mesa3d-08a4639e81f20954b2d78b0ff5bc268731372570.tar.bz2
glsl: don't lower fragdata array if the output data types don't match
Commit 7e414b58640aee6e243d337e72cea290c354f632 broke the gl_FragData array into separate gl_FragData[i] variables, so drivers can eliminate useless writes to gl_FragData improving their performance. The problem occurs when GLSL IR code is linked in the following case: * The FS output variable base data type does not match gl_FragData one (float vector) * The FS output variable is replaced by gl_out_FragDataX because of commit 7e414b58640aee6 with X from 0 to GL_MAX_DRAW_BUFFERS. Then the FS output variable base data type is lost in the resulting GLSL IR, making that the driver does a wrong assignment to gl_out_FragData components because of unmatching data types. This patch reverts the fragdata array lowering when the output var base data type doesn't match gl_out_FragData, i.e., when output variable base data type is not a float or a float vector. This patch fixes 250 dEQP tests (tested in an Intel Haswell machine) dEQP-GLES3.functional.fragment_out.random.* (22 failed tests) dEQP-GLES3.functional.fragment_out.array.uint.* (120 failed tests) dEQP-GLES3.functional.fragment_out.array.int.* (108 failed tests) Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'src/glsl/Makefile.sources')
0 files changed, 0 insertions, 0 deletions