mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 12:18:09 +02:00
d3d12: Get max supported shader model
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18022>
This commit is contained in:
parent
cb21534a7c
commit
85359eba03
3 changed files with 16 additions and 1 deletions
|
|
@ -148,7 +148,9 @@ compile_nir(struct d3d12_context *ctx, struct d3d12_shader_selector *sel,
|
|||
opts.provoking_vertex = key->fs.provoking_vertex;
|
||||
opts.input_clip_size = key->input_clip_size;
|
||||
opts.environment = DXIL_ENVIRONMENT_GL;
|
||||
opts.shader_model_max = SHADER_MODEL_6_2;
|
||||
static_assert(D3D_SHADER_MODEL_6_0 == 0x60 && SHADER_MODEL_6_0 == 0x60000, "Validating math below");
|
||||
static_assert(D3D_SHADER_MODEL_6_7 == 0x67 && SHADER_MODEL_6_7 == 0x60007, "Validating math below");
|
||||
opts.shader_model_max = ((screen->max_shader_model & 0xf0) << 12) | (screen->max_shader_model & 0xf);
|
||||
#ifdef _WIN32
|
||||
opts.validator_version_max = dxil_get_validator_version(ctx->dxil_validator);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1268,6 +1268,18 @@ d3d12_init_screen(struct d3d12_screen *screen, IUnknown *adapter)
|
|||
}
|
||||
screen->max_feature_level = feature_levels.MaxSupportedFeatureLevel;
|
||||
|
||||
static const D3D_SHADER_MODEL valid_shader_models[] = {
|
||||
D3D_SHADER_MODEL_6_7, D3D_SHADER_MODEL_6_6, D3D_SHADER_MODEL_6_5, D3D_SHADER_MODEL_6_4,
|
||||
D3D_SHADER_MODEL_6_3, D3D_SHADER_MODEL_6_2, D3D_SHADER_MODEL_6_1,
|
||||
};
|
||||
for (UINT i = 0; i < ARRAY_SIZE(valid_shader_models); ++i) {
|
||||
D3D12_FEATURE_DATA_SHADER_MODEL shader_model = { valid_shader_models[i] };
|
||||
if (SUCCEEDED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &shader_model, sizeof(shader_model)))) {
|
||||
screen->max_shader_model = shader_model.HighestShaderModel;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
D3D12_COMMAND_QUEUE_DESC queue_desc;
|
||||
queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
|
||||
queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ struct d3d12_screen {
|
|||
|
||||
/* capabilities */
|
||||
D3D_FEATURE_LEVEL max_feature_level;
|
||||
D3D_SHADER_MODEL max_shader_model;
|
||||
D3D12_FEATURE_DATA_ARCHITECTURE architecture;
|
||||
D3D12_FEATURE_DATA_D3D12_OPTIONS opts;
|
||||
D3D12_FEATURE_DATA_D3D12_OPTIONS1 opts1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue