On 10/15/2013 10:02 AM, Ian Romanick wrote: > On 10/14/2013 10:12 AM, Anuj Phogat wrote: >> New builtins added by GL_ARB_sample_shading: >> in vec2 gl_SamplePosition >> in int gl_SampleID >> in int gl_NumSamples >> out int gl_SampleMask[] >> >> Signed-off-by: Anuj Phogat <anuj.pho...@gmail.com> >> --- >> src/glsl/builtin_variables.cpp | 11 +++++++++++ >> src/glsl/link_varyings.cpp | 2 ++ >> src/mesa/main/mtypes.h | 7 ++++++- >> src/mesa/program/prog_print.c | 5 +++++ >> 4 files changed, 24 insertions(+), 1 deletion(-) >> >> diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp >> index ae0a03f..c886840 100644 >> --- a/src/glsl/builtin_variables.cpp >> +++ b/src/glsl/builtin_variables.cpp >> @@ -30,6 +30,9 @@ >> #include "program/prog_statevars.h" >> #include "program/prog_instruction.h" >> >> +static struct gl_builtin_uniform_element gl_NumSamples_elements[] = { >> + {NULL, {STATE_NUM_SAMPLES, 0, 0}, SWIZZLE_XYZW} >> +}; >> >> static struct gl_builtin_uniform_element gl_DepthRange_elements[] = { >> {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX}, >> @@ -236,6 +239,7 @@ static struct gl_builtin_uniform_element >> gl_NormalMatrix_elements[] = { >> #define STATEVAR(name) {#name, name ## _elements, Elements(name ## >> _elements)} >> >> static const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = { >> + STATEVAR(gl_NumSamples), >> STATEVAR(gl_DepthRange), >> STATEVAR(gl_ClipPlane), >> STATEVAR(gl_Point), >> @@ -613,6 +617,7 @@ builtin_variable_generator::generate_constants() >> void >> builtin_variable_generator::generate_uniforms() >> { >> + add_uniform(int_t, "gl_NumSamples"); >> add_uniform(type("gl_DepthRangeParameters"), "gl_DepthRange"); >> add_uniform(array(vec4_t, VERT_ATTRIB_MAX), "gl_CurrentAttribVertMESA"); >> add_uniform(array(vec4_t, VARYING_SLOT_MAX), "gl_CurrentAttribFragMESA"); >> @@ -789,6 +794,12 @@ builtin_variable_generator::generate_fs_special_vars() >> if (state->AMD_shader_stencil_export_warn) >> var->warn_extension = "GL_AMD_shader_stencil_export"; >> } >> + >> + if (state->ARB_sample_shading_enable) { >> + add_input(VARYING_SLOT_SAMPLE_ID, int_t, "gl_SampleID"); >> + add_input(VARYING_SLOT_SAMPLE_POS, vec2_t, "gl_SamplePosition"); >> + add_output(FRAG_RESULT_SAMPLE_MASK, array(int_t, 1), "gl_SampleMask"); > > I don't see code anywhere in this patch series that correctly sizes this > array. I thought gl_SampleMask.length() == gl_NumSamples... except you > can't use .length() on gl_SampleMask because the size can't be known at > compile-time. We should have a test that 'gl_SampleMask.length()' fails > to compile. :) > > The only other array that works like this is gl_TexCoord. That array is > sized to 0 (line 837 of builtin_variables.cpp). I believe gl_SampleMask > should do the same.
I believe 1 is the correct size. See my reply for a spec quote. --Ken _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev