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

Timothy Arceri tarceri at itsqueeze.com
Thu May 17 05:50:49 UTC 2018


On 17/05/18 15:23, Timothy Arceri wrote:
> On 17/05/18 14:59, Marek Olšák wrote:
>> On Thu, May 17, 2018 at 12:50 AM, Timothy Arceri 
>> <tarceri at itsqueeze.com <mailto:tarceri at itsqueeze.com>> wrote:
>>
>>
>>
>>     On 17/05/18 14:36, Marek Olšák wrote:
>>
>>         On Wed, May 16, 2018 at 11:01 PM, Timothy Arceri
>>         <tarceri at itsqueeze.com <mailto:tarceri at itsqueeze.com>
>>         <mailto:tarceri at itsqueeze.com <mailto:tarceri at itsqueeze.com>>>
>>         wrote:
>>
>>
>>
>>              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>
>>         <mailto:tarceri at itsqueeze.com <mailto:tarceri at itsqueeze.com>>
>>                  <mailto:tarceri at itsqueeze.com
>>         <mailto:tarceri at itsqueeze.com> <mailto: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.
>>
>>
>>         Why is it uniform?
>>
>>
>>      From ARB_shader_ballot:
>>
>>
>>          (Add to the list of built-in uniform variable declaration)
>>
>>              uniform uint  gl_SubGroupSizeARB;
>>
>>
>> I think it means that gl_SubGroupSizeARB is a compile-time constant. 
>> It probably shouldn't be a system value.
>>
>> Marek
> 
> In that case my original series should be sufficient once this is changed:
> 
> https://patchwork.freedesktop.org/series/43049/

Actually making it a non system value wont remove the need for this 
patch (or similar). Since we would need to make sure its not redefined 
as anything other than a uniform anyway.


More information about the mesa-dev mailing list