22// SPDX-License-Identifier: GPL-3.0+
33
44#include " GS/Renderers/DX12/D3D12ShaderCache.h"
5- #include " GS/Renderers/DX11/D3D.h"
65#include " GS/GS.h"
76
87#include " Config.h"
@@ -54,16 +53,18 @@ bool D3D12ShaderCache::CacheIndexKey::operator!=(const CacheIndexKey& key) const
5453 source_length != key.source_length );
5554}
5655
57- bool D3D12ShaderCache::Open (D3D_FEATURE_LEVEL feature_level , bool debug)
56+ bool D3D12ShaderCache::Open (D3D::ShaderModel shader_model , bool debug)
5857{
59- m_feature_level = feature_level;
58+ // Only support SM5.1 for now, which is the minimum for D3D12.
59+ pxAssert (shader_model >= D3D::ShaderModel::SM51);
60+ m_shader_model = shader_model;
6061 m_debug = debug;
6162
6263 bool result = true ;
6364
6465 if (!GSConfig.DisableShaderCache )
6566 {
66- const std::string base_shader_filename = GetCacheBaseFileName (" shaders" , feature_level , debug);
67+ const std::string base_shader_filename = GetCacheBaseFileName (" shaders" , m_shader_model , debug);
6768 const std::string shader_index_filename = base_shader_filename + " .idx" ;
6869 const std::string shader_blob_filename = base_shader_filename + " .bin" ;
6970
@@ -75,7 +76,7 @@ bool D3D12ShaderCache::Open(D3D_FEATURE_LEVEL feature_level, bool debug)
7576
7677 if (result)
7778 {
78- const std::string base_pipelines_filename = GetCacheBaseFileName (" pipelines" , feature_level , debug);
79+ const std::string base_pipelines_filename = GetCacheBaseFileName (" pipelines" , m_shader_model , debug);
7980 const std::string pipelines_index_filename = base_pipelines_filename + " .idx" ;
8081 const std::string pipelines_blob_filename = base_pipelines_filename + " .bin" ;
8182
@@ -133,7 +134,7 @@ void D3D12ShaderCache::InvalidatePipelineCache()
133134 if (GSConfig.DisableShaderCache )
134135 return ;
135136
136- const std::string base_pipelines_filename = GetCacheBaseFileName (" pipelines" , m_feature_level , m_debug);
137+ const std::string base_pipelines_filename = GetCacheBaseFileName (" pipelines" , m_shader_model , m_debug);
137138 const std::string pipelines_index_filename = base_pipelines_filename + " .idx" ;
138139 const std::string pipelines_blob_filename = base_pipelines_filename + " .bin" ;
139140 CreateNew (pipelines_index_filename, pipelines_blob_filename, m_pipeline_index_file, m_pipeline_blob_file);
@@ -253,21 +254,12 @@ bool D3D12ShaderCache::ReadExisting(const std::string& index_filename, const std
253254 return true ;
254255}
255256
256- std::string D3D12ShaderCache::GetCacheBaseFileName (const std::string_view type, D3D_FEATURE_LEVEL feature_level , bool debug)
257+ std::string D3D12ShaderCache::GetCacheBaseFileName (const std::string_view type, D3D::ShaderModel shader_model , bool debug)
257258{
258259 std::string base_filename = " d3d12_" ;
259260 base_filename += type;
260261 base_filename += " _" ;
261-
262- switch (feature_level)
263- {
264- case D3D_FEATURE_LEVEL_11_0:
265- base_filename += " sm50" ;
266- break ;
267- default :
268- base_filename += " unk" ;
269- break ;
270- }
262+ base_filename += D3D::ShaderModelToCacheString (shader_model);
271263
272264 if (debug)
273265 base_filename += " _debug" ;
@@ -497,15 +489,15 @@ D3D12ShaderCache::ComPtr<ID3DBlob> D3D12ShaderCache::CompileAndAddShaderBlob(
497489 {
498490 case EntryType::VertexShader:
499491 blob =
500- D3D::CompileShader (D3D::ShaderType::Vertex, m_feature_level , m_debug, shader_code, macros, entry_point);
492+ D3D::CompileShader (D3D::ShaderType::Vertex, m_shader_model , m_debug, shader_code, macros, entry_point);
501493 break ;
502494 case EntryType::PixelShader:
503495 blob =
504- D3D::CompileShader (D3D::ShaderType::Pixel, m_feature_level , m_debug, shader_code, macros, entry_point);
496+ D3D::CompileShader (D3D::ShaderType::Pixel, m_shader_model , m_debug, shader_code, macros, entry_point);
505497 break ;
506498 case EntryType::ComputeShader:
507- blob = D3D::CompileShader (
508- D3D::ShaderType::Compute, m_feature_level , m_debug, shader_code, macros, entry_point);
499+ blob =
500+ D3D::CompileShader (D3D:: ShaderType::Compute, m_shader_model , m_debug, shader_code, macros, entry_point);
509501 break ;
510502 default :
511503 break ;
0 commit comments