[Piglit] [PATCH] EXT_framebuffer_multisample: Fix many tests with MAX_DRAW_BUFFERS 0.
Eric Anholt
eric at anholt.net
Tue Jun 23 12:49:49 PDT 2015
We've got a bunch of tests that only attach a single color attachment,
but we were building the shader to always output 2/3 colors, which
would fail on an implementation that didn't support that many draw
buffers.
---
tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp b/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp
index 6d8634b..0d5adef 100644
--- a/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp
+++ b/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp
@@ -124,6 +124,7 @@ static const char *vert_template =
*/
static const char *frag_template =
"#version %s\n"
+ "#define NUM_ATTACHMENTS %d\n"
"#define DUAL_SRC_BLEND %d\n"
"#define ALPHA_TO_COVERAGE %d\n"
"#define OUT_TYPE %s\n"
@@ -133,14 +134,17 @@ static const char *frag_template =
"out vec4 frag_out_2;\n"
"#else\n"
"#define frag_out_0 gl_FragData[0]\n"
+ "#if NUM_ATTACHMENTS > 1\n"
"#define frag_out_1 gl_FragData[1]\n"
"#define frag_out_2 gl_FragData[2]\n"
"#endif\n"
+ "#endif\n"
"uniform OUT_TYPE frag_0_color;\n"
"uniform vec4 color;\n"
"void main()\n"
"{\n"
" frag_out_0 = frag_0_color;\n"
+ "#if NUM_ATTACHMENTS > 1\n"
" #if DUAL_SRC_BLEND\n"
" frag_out_1 = vec4(color.rgb, 1.0 - color.a / 2.0);\n"
" #elif ALPHA_TO_COVERAGE\n"
@@ -149,6 +153,7 @@ static const char *frag_template =
" #else\n"
" frag_out_1 = frag_out_2 = color;\n"
" #endif\n"
+ " #endif\n"
"}\n";
const char *
@@ -183,6 +188,7 @@ shader_compile(bool sample_alpha_to_coverage, bool dual_src_blend)
strlen(out_type_glsl) + 4;
char *frag = (char *) malloc(frag_alloc_len);
sprintf(frag, frag_template, need_glsl130 ? "130" : "120",
+ num_draw_buffers,
is_dual_src_blending,
sample_alpha_to_coverage, out_type_glsl);
--
2.1.4
More information about the Piglit
mailing list