[Mesa-dev] [PATCH v2 1/3] glsl: add glsl_external_mode() helper

Timothy Arceri tarceri at itsqueeze.com
Thu May 17 03:01:29 UTC 2018



On 17/05/18 10:59, Marek Olšák wrote:
> On Sat, May 12, 2018 at 12:49 AM, Timothy Arceri <tarceri at itsqueeze.com 
> <mailto:tarceri at itsqueeze.com>> wrote:
> 
>     This allows us to get the variable mode as specified by the GLSL
>     spec. We will use this in the following patch.
>     ---
>       src/compiler/glsl/ast_to_hir.cpp | 73 ++++++++++++++++++++++++++++++++
>       1 file changed, 73 insertions(+)
> 
>     diff --git a/src/compiler/glsl/ast_to_hir.cpp
>     b/src/compiler/glsl/ast_to_hir.cpp
>     index 3bf581571e2..a7a9ac80769 100644
>     --- a/src/compiler/glsl/ast_to_hir.cpp
>     +++ b/src/compiler/glsl/ast_to_hir.cpp
>     @@ -4175,6 +4175,79 @@ apply_type_qualifier_to_variable(const struct
>     ast_type_qualifier *qual,
>          apply_image_qualifier_to_variable(qual, var, state, loc);
>       }
> 
>     +/**
>     + * Get the GLSL mode specified in for system values (if any).
>     + */
>     +static enum ir_variable_mode
>     +glsl_external_mode(enum ir_variable_mode internal_mode,
>     gl_shader_stage stage,
>     +                   unsigned slot) {
>     +   if (internal_mode == ir_var_system_value) {
>     +      switch (slot) {
>     +      case SYSTEM_VALUE_SUBGROUP_SIZE:
>     +         return ir_var_uniform;
>     +      case SYSTEM_VALUE_PRIMITIVE_ID:
>     +         if (stage == MESA_SHADER_GEOMETRY) {
>     +            return ir_var_shader_out;
> 
> 
> System values are always inputs. This one is gl_PrimitiveIDIn.
> 
>     +         } else {
>     +            return ir_var_shader_in;
>     +         }
>     +      case SYSTEM_VALUE_TESS_LEVEL_OUTER:
>     +      case SYSTEM_VALUE_TESS_LEVEL_INNER:
>     +         if (stage == MESA_SHADER_TESS_CTRL) {
>     +            return ir_var_shader_out;
> 
> 
> System values are always inputs, i.e. TESS_CTRL isn't allowed here.

Hmm yeah your right I seem to have confused myself here a bit. However 
SYSTEM_VALUE_SUBGROUP_SIZE seems to be the odd one out in that its a 
uniform.

> 
> Marek
> 


More information about the mesa-dev mailing list