summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2014-07-12 17:28:24 -0400
committerMarek Olšák <[email protected]>2015-07-23 00:59:30 +0200
commitd00e2763b153c212e8f01af610ae305606044bcc (patch)
tree63f39a4574136313849c976caf7ee2f34ebabdab /src
parent40bc1c32d2fb42207ea860053045fa49e45d80b9 (diff)
st/mesa: query shader CAPs for tessellation
The MaxTessPatchComponents query added by Marek.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/state_tracker/st_extensions.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index b1057f3eadd..6c70df63037 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -165,6 +165,14 @@ void st_init_limits(struct pipe_screen *screen,
pc = &c->Program[MESA_SHADER_GEOMETRY];
options = &c->ShaderCompilerOptions[MESA_SHADER_GEOMETRY];
break;
+ case PIPE_SHADER_TESS_CTRL:
+ pc = &c->Program[MESA_SHADER_TESS_CTRL];
+ options = &c->ShaderCompilerOptions[MESA_SHADER_TESS_CTRL];
+ break;
+ case PIPE_SHADER_TESS_EVAL:
+ pc = &c->Program[MESA_SHADER_TESS_EVAL];
+ options = &c->ShaderCompilerOptions[MESA_SHADER_TESS_EVAL];
+ break;
default:
/* compute shader, etc. */
continue;
@@ -247,6 +255,8 @@ void st_init_limits(struct pipe_screen *screen,
c->MaxCombinedTextureImageUnits =
_min(c->Program[MESA_SHADER_VERTEX].MaxTextureImageUnits +
+ c->Program[MESA_SHADER_TESS_CTRL].MaxTextureImageUnits +
+ c->Program[MESA_SHADER_TESS_EVAL].MaxTextureImageUnits +
c->Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits +
c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
MAX_COMBINED_TEXTURE_IMAGE_UNITS);
@@ -266,6 +276,9 @@ void st_init_limits(struct pipe_screen *screen,
c->MaxVarying = MIN2(c->MaxVarying, MAX_VARYING);
c->MaxGeometryOutputVertices = screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES);
c->MaxGeometryTotalOutputComponents = screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS);
+ c->MaxTessPatchComponents =
+ MAX2(screen->get_param(screen, PIPE_CAP_MAX_SHADER_PATCH_VARYINGS),
+ MAX_VARYING) * 4;
c->MinProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MIN_TEXEL_OFFSET);
c->MaxProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MAX_TEXEL_OFFSET);
@@ -301,6 +314,8 @@ void st_init_limits(struct pipe_screen *screen,
screen->get_param(screen, PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT);
c->MaxCombinedUniformBlocks = c->MaxUniformBufferBindings =
c->Program[MESA_SHADER_VERTEX].MaxUniformBlocks +
+ c->Program[MESA_SHADER_TESS_CTRL].MaxUniformBlocks +
+ c->Program[MESA_SHADER_TESS_EVAL].MaxUniformBlocks +
c->Program[MESA_SHADER_GEOMETRY].MaxUniformBlocks +
c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks;
assert(c->MaxCombinedUniformBlocks <= MAX_COMBINED_UNIFORM_BUFFERS);