mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 19:20:08 +01:00
d3d12: Update max input, output, and varying caps
The simple-varyings piglit test attempts to use GL_MAX_VARYING_FLOATS varyings, PLUS one additional vector for position (which is not used as input to the PS). "Reserve" that additional position vector by removing it from the max varyings and max PS inputs. Reviewed-by: Bill Kristiansen <billkris@microsoft.com> Reviewed-By: Sil Vilerino <sivileri@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837>
This commit is contained in:
parent
0044e80b82
commit
bcfac68ce9
1 changed files with 21 additions and 10 deletions
|
|
@ -295,7 +295,8 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT;
|
||||
|
||||
case PIPE_CAP_MAX_VARYINGS:
|
||||
return D3D12_PS_INPUT_REGISTER_COUNT;
|
||||
/* Subtract one so that implicit position can be added */
|
||||
return D3D12_PS_INPUT_REGISTER_COUNT - 1;
|
||||
|
||||
case PIPE_CAP_NIR_COMPACT_ARRAYS:
|
||||
return 1;
|
||||
|
|
@ -389,18 +390,28 @@ d3d12_get_shader_param(struct pipe_screen *pscreen,
|
|||
return 0;
|
||||
|
||||
case PIPE_SHADER_CAP_MAX_INPUTS:
|
||||
return screen->max_feature_level >= D3D_FEATURE_LEVEL_10_1 ? 32 : 16;
|
||||
switch (shader) {
|
||||
case PIPE_SHADER_VERTEX: return D3D12_VS_INPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_FRAGMENT: return D3D12_PS_INPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_GEOMETRY: return D3D12_GS_INPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_TESS_CTRL: return D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_TESS_EVAL: return D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_COMPUTE: return 0;
|
||||
default: unreachable("Unexpected shader");
|
||||
}
|
||||
break;
|
||||
|
||||
case PIPE_SHADER_CAP_MAX_OUTPUTS:
|
||||
if (shader == PIPE_SHADER_FRAGMENT) {
|
||||
/* same as max MRTs (not sure if this is correct) */
|
||||
if (screen->max_feature_level >= D3D_FEATURE_LEVEL_10_0)
|
||||
return 8;
|
||||
else if (screen->max_feature_level == D3D_FEATURE_LEVEL_9_3)
|
||||
return 4;
|
||||
return 1;
|
||||
switch (shader) {
|
||||
case PIPE_SHADER_VERTEX: return D3D12_VS_OUTPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_FRAGMENT: return D3D12_PS_OUTPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_GEOMETRY: return D3D12_GS_OUTPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_TESS_CTRL: return D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_TESS_EVAL: return D3D12_DS_OUTPUT_REGISTER_COUNT;
|
||||
case PIPE_SHADER_COMPUTE: return 0;
|
||||
default: unreachable("Unexpected shader");
|
||||
}
|
||||
return screen->max_feature_level >= D3D_FEATURE_LEVEL_10_1 ? 32 : 16;
|
||||
break;
|
||||
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
if (screen->opts.ResourceBindingTier == D3D12_RESOURCE_BINDING_TIER_1)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue