diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c index 3fe78e0b7f0..3c2a923181e 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c +++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c @@ -73,7 +73,7 @@ struct ureg_tokens { #define UREG_MAX_INPUT PIPE_MAX_ATTRIBS #define UREG_MAX_SYSTEM_VALUE PIPE_MAX_ATTRIBS -#define UREG_MAX_OUTPUT PIPE_MAX_ATTRIBS +#define UREG_MAX_OUTPUT PIPE_MAX_SHADER_OUTPUTS #define UREG_MAX_CONSTANT_RANGE 32 #define UREG_MAX_IMMEDIATE 256 #define UREG_MAX_ADDR 2 diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 9ea9c0e3286..a67c43e6c14 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -59,7 +59,7 @@ extern "C" { #define PIPE_MAX_CONSTANT_BUFFERS 32 #define PIPE_MAX_SAMPLERS 16 #define PIPE_MAX_SHADER_INPUTS 32 -#define PIPE_MAX_SHADER_OUTPUTS 32 +#define PIPE_MAX_SHADER_OUTPUTS 48 /* 32 GENERICs + POS, PSIZE, FOG, etc. */ #define PIPE_MAX_SHADER_SAMPLER_VIEWS 32 #define PIPE_MAX_SHADER_RESOURCES 32 #define PIPE_MAX_TEXTURE_LEVELS 16 @@ -145,7 +145,7 @@ struct pipe_rasterizer_state unsigned line_stipple_factor:8; /**< [1..256] actually */ unsigned line_stipple_pattern:16; - unsigned sprite_coord_enable:PIPE_MAX_SHADER_OUTPUTS; + unsigned sprite_coord_enable; /* bitfield referring to 32 GENERIC inputs */ float line_width; float point_size; /**< used when no per-vertex size */ diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index ead1d323c5e..3572ae8770d 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -187,7 +187,7 @@ #define MAX_PROGRAM_CALL_DEPTH 8 #define MAX_PROGRAM_TEMPS 256 #define MAX_PROGRAM_ADDRESS_REGS 2 -#define MAX_VARYING 16 /**< number of float[4] vectors */ +#define MAX_VARYING 32 /**< number of float[4] vectors */ #define MAX_SAMPLERS MAX_TEXTURE_IMAGE_UNITS #define MAX_PROGRAM_INPUTS 32 #define MAX_PROGRAM_OUTPUTS 64 diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index a21ae102215..de385cdcd1f 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -624,7 +624,7 @@ _mesa_init_constants(struct gl_context *ctx) #if FEATURE_ARB_vertex_shader ctx->Const.MaxVertexTextureImageUnits = MAX_VERTEX_TEXTURE_IMAGE_UNITS; ctx->Const.MaxCombinedTextureImageUnits = MAX_COMBINED_TEXTURE_IMAGE_UNITS; - ctx->Const.MaxVarying = MAX_VARYING; + ctx->Const.MaxVarying = 16; /* old limit not to break tnl and swrast */ #endif #if FEATURE_ARB_geometry_shader4 ctx->Const.MaxGeometryTextureImageUnits = MAX_GEOMETRY_TEXTURE_IMAGE_UNITS; diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index bc5dc580367..887f020bdd8 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -164,7 +164,23 @@ arb_input_attrib_string(GLint index, GLenum progType) "fragment.varying[12]", "fragment.varying[13]", "fragment.varying[14]", - "fragment.varying[15]" /* MAX_VARYING = 16 */ + "fragment.varying[15]", + "fragment.varying[16]", + "fragment.varying[17]", + "fragment.varying[18]", + "fragment.varying[19]", + "fragment.varying[20]", + "fragment.varying[21]", + "fragment.varying[22]", + "fragment.varying[23]", + "fragment.varying[24]", + "fragment.varying[25]", + "fragment.varying[26]", + "fragment.varying[27]", + "fragment.varying[28]", + "fragment.varying[29]", + "fragment.varying[30]", + "fragment.varying[31]", /* MAX_VARYING = 32 */ }; /* sanity checks */ @@ -268,7 +284,23 @@ arb_output_attrib_string(GLint index, GLenum progType) "result.varying[12]", "result.varying[13]", "result.varying[14]", - "result.varying[15]" /* MAX_VARYING = 16 */ + "result.varying[15]", + "result.varying[16]", + "result.varying[17]", + "result.varying[18]", + "result.varying[19]", + "result.varying[20]", + "result.varying[21]", + "result.varying[22]", + "result.varying[23]", + "result.varying[24]", + "result.varying[25]", + "result.varying[26]", + "result.varying[27]", + "result.varying[28]", + "result.varying[29]", + "result.varying[30]", + "result.varying[31]", /* MAX_VARYING = 32 */ }; static const char *const fragResults[] = { "result.depth", /* FRAG_RESULT_DEPTH */