[Mesa-dev,01/11] gallium: define the maximum number of shader arrays

Submitted by Marek Olšák on May 24, 2015, 11:19 a.m.

Details

Message ID 1432466370-3869-2-git-send-email-maraeo@gmail.com
State New
Headers show

Not browsing as part of any series.

Commit Message

Marek Olšák May 24, 2015, 11:19 a.m.
From: Marek Olšák <marek.olsak@amd.com>

---
 src/gallium/drivers/radeon/radeon_llvm.h            |  3 +--
 src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c |  4 ++--
 src/gallium/include/pipe/p_state.h                  |  1 +
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp          | 11 +++--------
 4 files changed, 7 insertions(+), 12 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/gallium/drivers/radeon/radeon_llvm.h b/src/gallium/drivers/radeon/radeon_llvm.h
index 8612ef8..f249ca6 100644
--- a/src/gallium/drivers/radeon/radeon_llvm.h
+++ b/src/gallium/drivers/radeon/radeon_llvm.h
@@ -33,7 +33,6 @@ 
 
 #define RADEON_LLVM_MAX_INPUTS 32 * 4
 #define RADEON_LLVM_MAX_OUTPUTS 32 * 4
-#define RADEON_LLVM_MAX_ARRAYS 16
 
 #define RADEON_LLVM_INITIAL_CF_DEPTH 4
 
@@ -130,7 +129,7 @@  struct radeon_llvm_context {
 	unsigned loop_depth;
 	unsigned loop_depth_max;
 
-	struct tgsi_declaration_range arrays[RADEON_LLVM_MAX_ARRAYS];
+	struct tgsi_declaration_range arrays[PIPE_MAX_SHADER_ARRAYS];
 	unsigned num_arrays;
 
 	LLVMValueRef main_fn;
diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
index 8638537..2bef4b2 100644
--- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
+++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
@@ -86,7 +86,7 @@  get_array_range(struct lp_build_tgsi_context *bld_base,
 {
 	struct radeon_llvm_context * ctx = radeon_llvm_context(bld_base);
 	if (File != TGSI_FILE_TEMPORARY || reg->ArrayID == 0 ||
-            reg->ArrayID > RADEON_LLVM_MAX_ARRAYS) {
+            reg->ArrayID > PIPE_MAX_SHADER_ARRAYS) {
 		struct tgsi_declaration_range range;
 		range.First = 0;
 		range.Last = bld_base->info->file_max[File];
@@ -252,7 +252,7 @@  static void emit_declaration(
 	}
 
 	case TGSI_FILE_TEMPORARY:
-		if (decl->Declaration.Array && decl->Array.ArrayID <= RADEON_LLVM_MAX_ARRAYS)
+		if (decl->Declaration.Array && decl->Array.ArrayID <= PIPE_MAX_SHADER_ARRAYS)
 			ctx->arrays[decl->Array.ArrayID - 1] = decl->Range;
 		if (uses_temp_indirect_addressing(bld_base)) {
 			lp_emit_declaration_soa(bld_base, decl);
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index e01c62c..ad1404c 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -53,6 +53,7 @@  extern "C" {
 /**
  * Implementation limits
  */
+#define PIPE_MAX_SHADER_ARRAYS    256 /* maximum number of array declarations */
 #define PIPE_MAX_ATTRIBS          32
 #define PIPE_MAX_CLIP_PLANES       8
 #define PIPE_MAX_COLOR_BUFS        8
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index f0f2a77..e308c55 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -57,11 +57,6 @@ 
                            (1 << PROGRAM_CONSTANT) |     \
                            (1 << PROGRAM_UNIFORM))
 
-/**
- * Maximum number of arrays
- */
-#define MAX_ARRAYS        256
-
 #define MAX_GLSL_TEXTURE_OFFSET 4
 
 class st_src_reg;
@@ -317,7 +312,7 @@  public:
 
    int next_temp;
 
-   unsigned array_sizes[MAX_ARRAYS];
+   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
    unsigned next_array;
 
    int num_address_regs;
@@ -4362,7 +4357,7 @@  struct st_translate {
    unsigned temps_size;
    struct ureg_dst *temps;
 
-   struct ureg_dst arrays[MAX_ARRAYS];
+   struct ureg_dst arrays[PIPE_MAX_SHADER_ARRAYS];
    struct ureg_src *constants;
    int num_constants;
    struct ureg_src *immediates;
@@ -4373,7 +4368,7 @@  struct st_translate {
    struct ureg_src samplers[PIPE_MAX_SAMPLERS];
    struct ureg_src systemValues[SYSTEM_VALUE_MAX];
    struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
-   unsigned array_sizes[MAX_ARRAYS];
+   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
 
    const GLuint *inputMapping;
    const GLuint *outputMapping;

Comments

Do we really need this?
I think ideally we wouldn't really need any limit on this, as it is
already limited by the max number of the temps (though obviously that
number is higher). d3d10 doesn't seem to have any such limit neither.
If some driver can't do it, I think it's not unreasonable to expect the
driver to do the necessary array merging.

Roland


Am 24.05.2015 um 13:19 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak@amd.com>
> 
> ---
>  src/gallium/drivers/radeon/radeon_llvm.h            |  3 +--
>  src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c |  4 ++--
>  src/gallium/include/pipe/p_state.h                  |  1 +
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp          | 11 +++--------
>  4 files changed, 7 insertions(+), 12 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeon/radeon_llvm.h b/src/gallium/drivers/radeon/radeon_llvm.h
> index 8612ef8..f249ca6 100644
> --- a/src/gallium/drivers/radeon/radeon_llvm.h
> +++ b/src/gallium/drivers/radeon/radeon_llvm.h
> @@ -33,7 +33,6 @@
>  
>  #define RADEON_LLVM_MAX_INPUTS 32 * 4
>  #define RADEON_LLVM_MAX_OUTPUTS 32 * 4
> -#define RADEON_LLVM_MAX_ARRAYS 16
>  
>  #define RADEON_LLVM_INITIAL_CF_DEPTH 4
>  
> @@ -130,7 +129,7 @@ struct radeon_llvm_context {
>  	unsigned loop_depth;
>  	unsigned loop_depth_max;
>  
> -	struct tgsi_declaration_range arrays[RADEON_LLVM_MAX_ARRAYS];
> +	struct tgsi_declaration_range arrays[PIPE_MAX_SHADER_ARRAYS];
>  	unsigned num_arrays;
>  
>  	LLVMValueRef main_fn;
> diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> index 8638537..2bef4b2 100644
> --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> @@ -86,7 +86,7 @@ get_array_range(struct lp_build_tgsi_context *bld_base,
>  {
>  	struct radeon_llvm_context * ctx = radeon_llvm_context(bld_base);
>  	if (File != TGSI_FILE_TEMPORARY || reg->ArrayID == 0 ||
> -            reg->ArrayID > RADEON_LLVM_MAX_ARRAYS) {
> +            reg->ArrayID > PIPE_MAX_SHADER_ARRAYS) {
>  		struct tgsi_declaration_range range;
>  		range.First = 0;
>  		range.Last = bld_base->info->file_max[File];
> @@ -252,7 +252,7 @@ static void emit_declaration(
>  	}
>  
>  	case TGSI_FILE_TEMPORARY:
> -		if (decl->Declaration.Array && decl->Array.ArrayID <= RADEON_LLVM_MAX_ARRAYS)
> +		if (decl->Declaration.Array && decl->Array.ArrayID <= PIPE_MAX_SHADER_ARRAYS)
>  			ctx->arrays[decl->Array.ArrayID - 1] = decl->Range;
>  		if (uses_temp_indirect_addressing(bld_base)) {
>  			lp_emit_declaration_soa(bld_base, decl);
> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
> index e01c62c..ad1404c 100644
> --- a/src/gallium/include/pipe/p_state.h
> +++ b/src/gallium/include/pipe/p_state.h
> @@ -53,6 +53,7 @@ extern "C" {
>  /**
>   * Implementation limits
>   */
> +#define PIPE_MAX_SHADER_ARRAYS    256 /* maximum number of array declarations */
>  #define PIPE_MAX_ATTRIBS          32
>  #define PIPE_MAX_CLIP_PLANES       8
>  #define PIPE_MAX_COLOR_BUFS        8
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index f0f2a77..e308c55 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -57,11 +57,6 @@
>                             (1 << PROGRAM_CONSTANT) |     \
>                             (1 << PROGRAM_UNIFORM))
>  
> -/**
> - * Maximum number of arrays
> - */
> -#define MAX_ARRAYS        256
> -
>  #define MAX_GLSL_TEXTURE_OFFSET 4
>  
>  class st_src_reg;
> @@ -317,7 +312,7 @@ public:
>  
>     int next_temp;
>  
> -   unsigned array_sizes[MAX_ARRAYS];
> +   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
>     unsigned next_array;
>  
>     int num_address_regs;
> @@ -4362,7 +4357,7 @@ struct st_translate {
>     unsigned temps_size;
>     struct ureg_dst *temps;
>  
> -   struct ureg_dst arrays[MAX_ARRAYS];
> +   struct ureg_dst arrays[PIPE_MAX_SHADER_ARRAYS];
>     struct ureg_src *constants;
>     int num_constants;
>     struct ureg_src *immediates;
> @@ -4373,7 +4368,7 @@ struct st_translate {
>     struct ureg_src samplers[PIPE_MAX_SAMPLERS];
>     struct ureg_src systemValues[SYSTEM_VALUE_MAX];
>     struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
> -   unsigned array_sizes[MAX_ARRAYS];
> +   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
>  
>     const GLuint *inputMapping;
>     const GLuint *outputMapping;
>
It makes it easier for the statically-sized arrays. Not that there is
anything good about statically-sized arrays.

The hard limit is 1022 arrays per file, because ArrayID has 10 bits.

Marek

On Mon, May 25, 2015 at 8:42 PM, Roland Scheidegger <sroland@vmware.com> wrote:
> Do we really need this?
> I think ideally we wouldn't really need any limit on this, as it is
> already limited by the max number of the temps (though obviously that
> number is higher). d3d10 doesn't seem to have any such limit neither.
> If some driver can't do it, I think it's not unreasonable to expect the
> driver to do the necessary array merging.
>
> Roland
>
>
> Am 24.05.2015 um 13:19 schrieb Marek Olšák:
>> From: Marek Olšák <marek.olsak@amd.com>
>>
>> ---
>>  src/gallium/drivers/radeon/radeon_llvm.h            |  3 +--
>>  src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c |  4 ++--
>>  src/gallium/include/pipe/p_state.h                  |  1 +
>>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp          | 11 +++--------
>>  4 files changed, 7 insertions(+), 12 deletions(-)
>>
>> diff --git a/src/gallium/drivers/radeon/radeon_llvm.h b/src/gallium/drivers/radeon/radeon_llvm.h
>> index 8612ef8..f249ca6 100644
>> --- a/src/gallium/drivers/radeon/radeon_llvm.h
>> +++ b/src/gallium/drivers/radeon/radeon_llvm.h
>> @@ -33,7 +33,6 @@
>>
>>  #define RADEON_LLVM_MAX_INPUTS 32 * 4
>>  #define RADEON_LLVM_MAX_OUTPUTS 32 * 4
>> -#define RADEON_LLVM_MAX_ARRAYS 16
>>
>>  #define RADEON_LLVM_INITIAL_CF_DEPTH 4
>>
>> @@ -130,7 +129,7 @@ struct radeon_llvm_context {
>>       unsigned loop_depth;
>>       unsigned loop_depth_max;
>>
>> -     struct tgsi_declaration_range arrays[RADEON_LLVM_MAX_ARRAYS];
>> +     struct tgsi_declaration_range arrays[PIPE_MAX_SHADER_ARRAYS];
>>       unsigned num_arrays;
>>
>>       LLVMValueRef main_fn;
>> diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> index 8638537..2bef4b2 100644
>> --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> @@ -86,7 +86,7 @@ get_array_range(struct lp_build_tgsi_context *bld_base,
>>  {
>>       struct radeon_llvm_context * ctx = radeon_llvm_context(bld_base);
>>       if (File != TGSI_FILE_TEMPORARY || reg->ArrayID == 0 ||
>> -            reg->ArrayID > RADEON_LLVM_MAX_ARRAYS) {
>> +            reg->ArrayID > PIPE_MAX_SHADER_ARRAYS) {
>>               struct tgsi_declaration_range range;
>>               range.First = 0;
>>               range.Last = bld_base->info->file_max[File];
>> @@ -252,7 +252,7 @@ static void emit_declaration(
>>       }
>>
>>       case TGSI_FILE_TEMPORARY:
>> -             if (decl->Declaration.Array && decl->Array.ArrayID <= RADEON_LLVM_MAX_ARRAYS)
>> +             if (decl->Declaration.Array && decl->Array.ArrayID <= PIPE_MAX_SHADER_ARRAYS)
>>                       ctx->arrays[decl->Array.ArrayID - 1] = decl->Range;
>>               if (uses_temp_indirect_addressing(bld_base)) {
>>                       lp_emit_declaration_soa(bld_base, decl);
>> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
>> index e01c62c..ad1404c 100644
>> --- a/src/gallium/include/pipe/p_state.h
>> +++ b/src/gallium/include/pipe/p_state.h
>> @@ -53,6 +53,7 @@ extern "C" {
>>  /**
>>   * Implementation limits
>>   */
>> +#define PIPE_MAX_SHADER_ARRAYS    256 /* maximum number of array declarations */
>>  #define PIPE_MAX_ATTRIBS          32
>>  #define PIPE_MAX_CLIP_PLANES       8
>>  #define PIPE_MAX_COLOR_BUFS        8
>> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> index f0f2a77..e308c55 100644
>> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> @@ -57,11 +57,6 @@
>>                             (1 << PROGRAM_CONSTANT) |     \
>>                             (1 << PROGRAM_UNIFORM))
>>
>> -/**
>> - * Maximum number of arrays
>> - */
>> -#define MAX_ARRAYS        256
>> -
>>  #define MAX_GLSL_TEXTURE_OFFSET 4
>>
>>  class st_src_reg;
>> @@ -317,7 +312,7 @@ public:
>>
>>     int next_temp;
>>
>> -   unsigned array_sizes[MAX_ARRAYS];
>> +   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
>>     unsigned next_array;
>>
>>     int num_address_regs;
>> @@ -4362,7 +4357,7 @@ struct st_translate {
>>     unsigned temps_size;
>>     struct ureg_dst *temps;
>>
>> -   struct ureg_dst arrays[MAX_ARRAYS];
>> +   struct ureg_dst arrays[PIPE_MAX_SHADER_ARRAYS];
>>     struct ureg_src *constants;
>>     int num_constants;
>>     struct ureg_src *immediates;
>> @@ -4373,7 +4368,7 @@ struct st_translate {
>>     struct ureg_src samplers[PIPE_MAX_SAMPLERS];
>>     struct ureg_src systemValues[SYSTEM_VALUE_MAX];
>>     struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
>> -   unsigned array_sizes[MAX_ARRAYS];
>> +   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
>>
>>     const GLuint *inputMapping;
>>     const GLuint *outputMapping;
>>
>
I'm dropping this patch. I've also sent a new version of patch 2 as
well as new patches that dynamically allocate some of the arrays.

The complete patch series with all feedback comments resolved is also here:
http://cgit.freedesktop.org/~mareko/mesa/log/?h=tgsi-arrays
(starting from "glsl_to_tgsi: don't use a static array size for "array_sizes")

Marek


On Mon, May 25, 2015 at 8:42 PM, Roland Scheidegger <sroland@vmware.com> wrote:
> Do we really need this?
> I think ideally we wouldn't really need any limit on this, as it is
> already limited by the max number of the temps (though obviously that
> number is higher). d3d10 doesn't seem to have any such limit neither.
> If some driver can't do it, I think it's not unreasonable to expect the
> driver to do the necessary array merging.
>
> Roland
>
>
> Am 24.05.2015 um 13:19 schrieb Marek Olšák:
>> From: Marek Olšák <marek.olsak@amd.com>
>>
>> ---
>>  src/gallium/drivers/radeon/radeon_llvm.h            |  3 +--
>>  src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c |  4 ++--
>>  src/gallium/include/pipe/p_state.h                  |  1 +
>>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp          | 11 +++--------
>>  4 files changed, 7 insertions(+), 12 deletions(-)
>>
>> diff --git a/src/gallium/drivers/radeon/radeon_llvm.h b/src/gallium/drivers/radeon/radeon_llvm.h
>> index 8612ef8..f249ca6 100644
>> --- a/src/gallium/drivers/radeon/radeon_llvm.h
>> +++ b/src/gallium/drivers/radeon/radeon_llvm.h
>> @@ -33,7 +33,6 @@
>>
>>  #define RADEON_LLVM_MAX_INPUTS 32 * 4
>>  #define RADEON_LLVM_MAX_OUTPUTS 32 * 4
>> -#define RADEON_LLVM_MAX_ARRAYS 16
>>
>>  #define RADEON_LLVM_INITIAL_CF_DEPTH 4
>>
>> @@ -130,7 +129,7 @@ struct radeon_llvm_context {
>>       unsigned loop_depth;
>>       unsigned loop_depth_max;
>>
>> -     struct tgsi_declaration_range arrays[RADEON_LLVM_MAX_ARRAYS];
>> +     struct tgsi_declaration_range arrays[PIPE_MAX_SHADER_ARRAYS];
>>       unsigned num_arrays;
>>
>>       LLVMValueRef main_fn;
>> diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> index 8638537..2bef4b2 100644
>> --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> @@ -86,7 +86,7 @@ get_array_range(struct lp_build_tgsi_context *bld_base,
>>  {
>>       struct radeon_llvm_context * ctx = radeon_llvm_context(bld_base);
>>       if (File != TGSI_FILE_TEMPORARY || reg->ArrayID == 0 ||
>> -            reg->ArrayID > RADEON_LLVM_MAX_ARRAYS) {
>> +            reg->ArrayID > PIPE_MAX_SHADER_ARRAYS) {
>>               struct tgsi_declaration_range range;
>>               range.First = 0;
>>               range.Last = bld_base->info->file_max[File];
>> @@ -252,7 +252,7 @@ static void emit_declaration(
>>       }
>>
>>       case TGSI_FILE_TEMPORARY:
>> -             if (decl->Declaration.Array && decl->Array.ArrayID <= RADEON_LLVM_MAX_ARRAYS)
>> +             if (decl->Declaration.Array && decl->Array.ArrayID <= PIPE_MAX_SHADER_ARRAYS)
>>                       ctx->arrays[decl->Array.ArrayID - 1] = decl->Range;
>>               if (uses_temp_indirect_addressing(bld_base)) {
>>                       lp_emit_declaration_soa(bld_base, decl);
>> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
>> index e01c62c..ad1404c 100644
>> --- a/src/gallium/include/pipe/p_state.h
>> +++ b/src/gallium/include/pipe/p_state.h
>> @@ -53,6 +53,7 @@ extern "C" {
>>  /**
>>   * Implementation limits
>>   */
>> +#define PIPE_MAX_SHADER_ARRAYS    256 /* maximum number of array declarations */
>>  #define PIPE_MAX_ATTRIBS          32
>>  #define PIPE_MAX_CLIP_PLANES       8
>>  #define PIPE_MAX_COLOR_BUFS        8
>> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> index f0f2a77..e308c55 100644
>> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> @@ -57,11 +57,6 @@
>>                             (1 << PROGRAM_CONSTANT) |     \
>>                             (1 << PROGRAM_UNIFORM))
>>
>> -/**
>> - * Maximum number of arrays
>> - */
>> -#define MAX_ARRAYS        256
>> -
>>  #define MAX_GLSL_TEXTURE_OFFSET 4
>>
>>  class st_src_reg;
>> @@ -317,7 +312,7 @@ public:
>>
>>     int next_temp;
>>
>> -   unsigned array_sizes[MAX_ARRAYS];
>> +   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
>>     unsigned next_array;
>>
>>     int num_address_regs;
>> @@ -4362,7 +4357,7 @@ struct st_translate {
>>     unsigned temps_size;
>>     struct ureg_dst *temps;
>>
>> -   struct ureg_dst arrays[MAX_ARRAYS];
>> +   struct ureg_dst arrays[PIPE_MAX_SHADER_ARRAYS];
>>     struct ureg_src *constants;
>>     int num_constants;
>>     struct ureg_src *immediates;
>> @@ -4373,7 +4368,7 @@ struct st_translate {
>>     struct ureg_src samplers[PIPE_MAX_SAMPLERS];
>>     struct ureg_src systemValues[SYSTEM_VALUE_MAX];
>>     struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
>> -   unsigned array_sizes[MAX_ARRAYS];
>> +   unsigned array_sizes[PIPE_MAX_SHADER_ARRAYS];
>>
>>     const GLuint *inputMapping;
>>     const GLuint *outputMapping;
>>
>