diff options
author | Marek Olšák <[email protected]> | 2013-05-02 02:41:11 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2013-05-11 23:45:01 +0200 |
commit | b6d3373442503d95fbba4d376dd721f5b7a8ea61 (patch) | |
tree | 4be288d56f475a069089cf89776b8fc45a6bf754 /src | |
parent | 614ee25077b7ffafeb87b22563d01856824fb4bc (diff) |
st/mesa: consolidate setting MaxTextureImageUnits
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/state_tracker/st_extensions.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index d32f50a416c..0aac086cf43 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -89,25 +89,10 @@ void st_init_limits(struct st_context *st) c->MaxArrayTextureLayers = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS); - c->FragmentProgram.MaxTextureImageUnits - = _min(screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT, - PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS), - MAX_TEXTURE_IMAGE_UNITS); - - c->VertexProgram.MaxTextureImageUnits - = _min(screen->get_shader_param(screen, PIPE_SHADER_VERTEX, - PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS), - MAX_TEXTURE_IMAGE_UNITS); - c->MaxCombinedTextureImageUnits = _min(screen->get_param(screen, PIPE_CAP_MAX_COMBINED_SAMPLERS), MAX_COMBINED_TEXTURE_IMAGE_UNITS); - c->MaxTextureCoordUnits - = _min(c->FragmentProgram.MaxTextureImageUnits, MAX_TEXTURE_COORD_UNITS); - - c->MaxTextureUnits = _min(c->FragmentProgram.MaxTextureImageUnits, c->MaxTextureCoordUnits); - /* Define max viewport size and max renderbuffer size in terms of * max texture size (note: max tex RECT size = max tex 2D size). * If this isn't true for some hardware we'll need new PIPE_CAP_ queries. @@ -188,6 +173,11 @@ void st_init_limits(struct st_context *st) continue; } + pc->MaxTextureImageUnits = + _min(screen->get_shader_param(screen, sh, + PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS), + MAX_TEXTURE_IMAGE_UNITS); + pc->MaxInstructions = pc->MaxNativeInstructions = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS); pc->MaxAluInstructions = pc->MaxNativeAluInstructions = @@ -253,6 +243,12 @@ void st_init_limits(struct st_context *st) options->LowerClipDistance = true; } + /* This depends on program constants. */ + c->MaxTextureCoordUnits + = _min(c->FragmentProgram.MaxTextureImageUnits, MAX_TEXTURE_COORD_UNITS); + + c->MaxTextureUnits = _min(c->FragmentProgram.MaxTextureImageUnits, c->MaxTextureCoordUnits); + c->VertexProgram.MaxAttribs = MIN2(c->VertexProgram.MaxAttribs, 16); /* PIPE_SHADER_CAP_MAX_INPUTS for the FS specifies the maximum number |