[Mesa-dev] [PATCH v2 1/3] glsl: add glsl_external_mode() helper
Timothy Arceri
tarceri at itsqueeze.com
Thu May 17 04:50:43 UTC 2018
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>> 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>>>
> 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;
>
> Marek
More information about the mesa-dev
mailing list