[Mesa-dev] [PATCH 2/2] nir: Print the components referenced for split or packed shader in/outs.
Timothy Arceri
tarceri at itsqueeze.com
Fri Oct 20 09:52:53 UTC 2017
On 20/10/17 17:33, Timothy Arceri wrote:
> On 18/10/17 07:52, Eric Anholt wrote:
>> Having 4 variables all called "gl_in_TexCoord0 at n" isn't very informative,
>> much better to see:
>>
>> decl_var shader_in INTERP_MODE_NONE float gl_in_TexCoord0
>> (VARYING_SLOT_VAR0.x, 1, 0)
>> decl_var shader_in INTERP_MODE_NONE float gl_in_TexCoord0 at 0
>> (VARYING_SLOT_VAR0.y, 1, 0)
>> decl_var shader_in INTERP_MODE_NONE float gl_in_TexCoord0 at 1
>> (VARYING_SLOT_VAR0.z, 1, 0)
>> decl_var shader_in INTERP_MODE_NONE float gl_in_TexCoord0 at 2
>> (VARYING_SLOT_VAR0.w, 1, 0)
>> ---
>> src/compiler/nir/nir_print.c | 25 ++++++++++++++++++++++++-
>> 1 file changed, 24 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c
>> index f4811fe8bc11..df7a2057bfb9 100644
>> --- a/src/compiler/nir/nir_print.c
>> +++ b/src/compiler/nir/nir_print.c
>> @@ -447,7 +447,30 @@ print_var_decl(nir_variable *var, print_state
>> *state)
>> loc = buf;
>> }
>> - fprintf(fp, " (%s, %u, %u)%s", loc, var->data.driver_location,
>> var->data.binding,
>> + /* For shader I/O vars that have been split to components or
>> packed,
>> + * print the fractional location within the input/output.
>> + */
>> + unsigned int num_components = glsl_get_components(var->type);
>
> This needs to be:
>
> glsl_without_array(glsl_get_components(var->type));
Sorry I mean:
glsl_get_components(glsl_without_array(var->type));
>
>> + const char *components = NULL;
>> + char components_local[6] = {'.' /* the rest is 0-filled */};
>> + switch (var->data.mode) {
>> + case nir_var_shader_in:
>> + case nir_var_shader_out:
>> + if (num_components != 4) {
>> + const char *xyzw = "xyzw";
>> + for (int i = 0; i < num_components; i++)
>> + components_local[i + 1] = xyzw[i +
>> var->data.location_frac];
>> +
>> + components = components_local;
>> + }
>> + break;
>> + default:
>> + break;
>> + }
>> +
>> + fprintf(fp, " (%s%s, %u, %u)%s", loc,
>> + components ? components : "",
>> + var->data.driver_location, var->data.binding,
>> var->data.compact ? " compact" : "");
>> }
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list