On 02/19/2016 01:55 AM, Iago Toral wrote: > On Wed, 2016-02-17 at 17:58 -0800, Ian Romanick wrote: >> From: Ian Romanick <ian.d.roman...@intel.com> >> >> Just include all 3 versions in the shader. The GLSL type system will >> pick the correct one. This simplifies the code a bit, and it helps pave >> the way for additional simplifications. >> >> For vec4 outputs, we have to make out_color not be a shader output. >> Otherwise the shader will fail to compile due to static writes to both a >> user-defined output and gl_FragColor. This is pretty ugly, and I think >> it should be fixed by not writing to gl_FragColor... but that has its >> own challenges. > > I am a bit confused by this last paragraph, isn't this issue fixed in > patch 18?
Yes... that whole paragraph is a left-over. I'll remove it. >> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> >> --- >> src/mesa/drivers/common/meta_blit.c | 23 +++++++++-------------- >> 1 file changed, 9 insertions(+), 14 deletions(-) >> >> diff --git a/src/mesa/drivers/common/meta_blit.c >> b/src/mesa/drivers/common/meta_blit.c >> index 72428f9..355c937 100644 >> --- a/src/mesa/drivers/common/meta_blit.c >> +++ b/src/mesa/drivers/common/meta_blit.c >> @@ -550,19 +550,6 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx, >> } >> } >> >> - /* Scale the final result. */ >> - if (src_datatype == GL_UNSIGNED_INT || src_datatype == GL_INT) { >> - ralloc_asprintf_append(&sample_resolve, >> - " for (int i = 0; i < >> out_color.length(); i++)\n" >> - " out_color[i] = sample_%d_0;\n", >> - samples); >> - } else { >> - ralloc_asprintf_append(&sample_resolve, >> - " for (int i = 0; i < >> out_color.length(); i++)\n" >> - " out_color[i] = sample_%d_0 / >> %f;\n", >> - samples, (float)samples); >> - } >> - >> fs_source = ralloc_asprintf(mem_ctx, >> "#version 130\n" >> "#extension >> GL_ARB_texture_multisample: require\n" >> @@ -575,17 +562,25 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx, >> "ivec4 merge(ivec4 a, ivec4 b) { >> return (a >> 1) + (b >> 1) + (a & b & 1); }\n" >> /* The divide will happen at the end >> for floats. */ >> "vec4 merge(vec4 a, vec4 b) { return a >> + b; }\n" >> + "void emit2(gvec4 s) { for (int i = 0; >> i < out_color.length(); i++) out_color[i] = s; }\n" >> + "void emit(ivec4 s) { emit2(gvec4(s)); >> }\n" >> + "void emit(uvec4 s) { emit2(gvec4(s)); >> }\n" >> + /* Scale the final result. */ >> + "void emit(vec4 s) { emit2(gvec4(s / >> %f)); }\n" >> "\n" >> "void main()\n" >> "{\n" >> "%s\n" /* sample_resolve */ >> + " emit(sample_%d_0);\n" >> "}\n", >> vec4_prefix, >> vec4_prefix, >> sampler_array_suffix, >> texcoord_type, >> drawFb->_NumColorDrawBuffers, >> - sample_resolve); >> + (float) samples, >> + sample_resolve, >> + samples); >> } >> >> vs_source = ralloc_asprintf(mem_ctx, > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev