zink: enable gs pipe caps

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7139>
This commit is contained in:
Mike Blumenkrantz 2020-10-14 10:42:17 -04:00
parent 4c734da7de
commit 8028991f36

View file

@ -216,7 +216,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES: case PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES:
return screen->info.props.limits.maxGeometryOutputVertices; return screen->info.props.limits.maxGeometryOutputVertices;
case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:
return screen->info.props.limits.maxGeometryOutputComponents; return screen->info.props.limits.maxGeometryTotalOutputComponents;
#if 0 /* TODO: Enable me. Enables ARB_texture_gather */ #if 0 /* TODO: Enable me. Enables ARB_texture_gather */
case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS: case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS:
@ -286,7 +286,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 0; /* not sure */ return 0; /* not sure */
case PIPE_CAP_MAX_GS_INVOCATIONS: case PIPE_CAP_MAX_GS_INVOCATIONS:
return 0; /* not implemented */ return screen->info.props.limits.maxGeometryShaderInvocations;
case PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS: case PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS:
return screen->info.props.limits.maxDescriptorSetStorageBuffers; return screen->info.props.limits.maxDescriptorSetStorageBuffers;
@ -374,6 +374,15 @@ zink_get_shader_param(struct pipe_screen *pscreen,
switch (param) { switch (param) {
case PIPE_SHADER_CAP_MAX_INSTRUCTIONS: case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
switch (shader) {
case PIPE_SHADER_FRAGMENT:
case PIPE_SHADER_VERTEX:
case PIPE_SHADER_GEOMETRY:
return INT_MAX;
default:
break;
}
return 0;
case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS: case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS: case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS: case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS:
@ -388,6 +397,9 @@ zink_get_shader_param(struct pipe_screen *pscreen,
case PIPE_SHADER_VERTEX: case PIPE_SHADER_VERTEX:
return MIN2(screen->info.props.limits.maxVertexInputAttributes, return MIN2(screen->info.props.limits.maxVertexInputAttributes,
PIPE_MAX_SHADER_INPUTS); PIPE_MAX_SHADER_INPUTS);
case PIPE_SHADER_GEOMETRY:
return MIN2(screen->info.props.limits.maxGeometryInputComponents,
PIPE_MAX_SHADER_INPUTS);
case PIPE_SHADER_FRAGMENT: case PIPE_SHADER_FRAGMENT:
return MIN2(screen->info.props.limits.maxFragmentInputComponents / 4, return MIN2(screen->info.props.limits.maxFragmentInputComponents / 4,
PIPE_MAX_SHADER_INPUTS); PIPE_MAX_SHADER_INPUTS);
@ -400,6 +412,9 @@ zink_get_shader_param(struct pipe_screen *pscreen,
case PIPE_SHADER_VERTEX: case PIPE_SHADER_VERTEX:
return MIN2(screen->info.props.limits.maxVertexOutputComponents / 4, return MIN2(screen->info.props.limits.maxVertexOutputComponents / 4,
PIPE_MAX_SHADER_OUTPUTS); PIPE_MAX_SHADER_OUTPUTS);
case PIPE_SHADER_GEOMETRY:
return MIN2(screen->info.props.limits.maxGeometryOutputComponents / 4,
PIPE_MAX_SHADER_OUTPUTS);
case PIPE_SHADER_FRAGMENT: case PIPE_SHADER_FRAGMENT:
return MIN2(screen->info.props.limits.maxColorAttachments, return MIN2(screen->info.props.limits.maxColorAttachments,
PIPE_MAX_SHADER_OUTPUTS); PIPE_MAX_SHADER_OUTPUTS);
@ -411,6 +426,7 @@ zink_get_shader_param(struct pipe_screen *pscreen,
switch (shader) { switch (shader) {
case PIPE_SHADER_VERTEX: case PIPE_SHADER_VERTEX:
case PIPE_SHADER_FRAGMENT: case PIPE_SHADER_FRAGMENT:
case PIPE_SHADER_GEOMETRY:
/* this might be a bit simplistic... */ /* this might be a bit simplistic... */
return MIN2(screen->info.props.limits.maxPerStageDescriptorSamplers, return MIN2(screen->info.props.limits.maxPerStageDescriptorSamplers,
PIPE_MAX_SAMPLERS); PIPE_MAX_SAMPLERS);