diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2025-09-27 00:24:05 -0500 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2025-10-26 22:47:23 -0500 |
| commit | 96fe6a157549761c37dd65e28f76938b4934a997 (patch) | |
| tree | 956918d0c680e84941b6dc5dee410d0416f90dda /Source/Core/VideoCommon/ShaderCache.cpp | |
| parent | ba2acb872c294a7a01f8d24cd2a8cd9f4ec6f73a (diff) | |
VideoBackends / VideoCommon: add support for specifying include files in shader code
Diffstat (limited to 'Source/Core/VideoCommon/ShaderCache.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/ShaderCache.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/Source/Core/VideoCommon/ShaderCache.cpp b/Source/Core/VideoCommon/ShaderCache.cpp index 7490350690..44868808dd 100644 --- a/Source/Core/VideoCommon/ShaderCache.cpp +++ b/Source/Core/VideoCommon/ShaderCache.cpp @@ -442,7 +442,7 @@ ShaderCache::CompileVertexUberShader(const UberShader::VertexShaderUid& uid) con { const ShaderCode source_code = UberShader::GenVertexShader(m_api_type, m_host_config, uid.GetUidData()); - return g_gfx->CreateShaderFromSource(ShaderStage::Vertex, source_code.GetBuffer(), + return g_gfx->CreateShaderFromSource(ShaderStage::Vertex, source_code.GetBuffer(), nullptr, fmt::to_string(*uid.GetUidData())); } @@ -458,7 +458,7 @@ ShaderCache::CompilePixelUberShader(const UberShader::PixelShaderUid& uid) const { const ShaderCode source_code = UberShader::GenPixelShader(m_api_type, m_host_config, uid.GetUidData()); - return g_gfx->CreateShaderFromSource(ShaderStage::Pixel, source_code.GetBuffer(), + return g_gfx->CreateShaderFromSource(ShaderStage::Pixel, source_code.GetBuffer(), nullptr, fmt::to_string(*uid.GetUidData())); } @@ -555,7 +555,7 @@ const AbstractShader* ShaderCache::CreateGeometryShader(const GeometryShaderUid& const ShaderCode source_code = GenerateGeometryShaderCode(m_api_type, m_host_config, uid.GetUidData()); std::unique_ptr<AbstractShader> shader = - g_gfx->CreateShaderFromSource(ShaderStage::Geometry, source_code.GetBuffer(), + g_gfx->CreateShaderFromSource(ShaderStage::Geometry, source_code.GetBuffer(), nullptr, fmt::format("Geometry shader: {}", *uid.GetUidData())); auto& entry = m_gs_cache.shader_map[uid]; @@ -1393,7 +1393,7 @@ ShaderCache::GetEFBCopyToVRAMPipeline(const TextureConversionShaderGen::TCShader auto shader_code = TextureConversionShaderGen::GeneratePixelShader(m_api_type, uid.GetUidData()); auto shader = g_gfx->CreateShaderFromSource( - ShaderStage::Pixel, shader_code.GetBuffer(), + ShaderStage::Pixel, shader_code.GetBuffer(), nullptr, fmt::format("EFB copy to VRAM pixel shader: {}", *uid.GetUidData())); if (!shader) { @@ -1424,8 +1424,9 @@ const AbstractPipeline* ShaderCache::GetEFBCopyToRAMPipeline(const EFBCopyParams const std::string shader_code = TextureConversionShaderTiled::GenerateEncodingShader(uid, m_api_type); - const auto shader = g_gfx->CreateShaderFromSource( - ShaderStage::Pixel, shader_code, fmt::format("EFB copy to RAM pixel shader: {}", uid)); + const auto shader = + g_gfx->CreateShaderFromSource(ShaderStage::Pixel, shader_code, nullptr, + fmt::format("EFB copy to RAM pixel shader: {}", uid)); if (!shader) { m_efb_copy_to_ram_pipelines.emplace(uid, nullptr); @@ -1447,14 +1448,14 @@ const AbstractPipeline* ShaderCache::GetEFBCopyToRAMPipeline(const EFBCopyParams bool ShaderCache::CompileSharedPipelines() { m_screen_quad_vertex_shader = g_gfx->CreateShaderFromSource( - ShaderStage::Vertex, FramebufferShaderGen::GenerateScreenQuadVertexShader(), + ShaderStage::Vertex, FramebufferShaderGen::GenerateScreenQuadVertexShader(), nullptr, "Screen quad vertex shader"); m_texture_copy_vertex_shader = g_gfx->CreateShaderFromSource( - ShaderStage::Vertex, FramebufferShaderGen::GenerateTextureCopyVertexShader(), + ShaderStage::Vertex, FramebufferShaderGen::GenerateTextureCopyVertexShader(), nullptr, "Texture copy vertex shader"); m_efb_copy_vertex_shader = g_gfx->CreateShaderFromSource( ShaderStage::Vertex, TextureConversionShaderGen::GenerateVertexShader(m_api_type).GetBuffer(), - "EFB copy vertex shader"); + nullptr, "EFB copy vertex shader"); if (!m_screen_quad_vertex_shader || !m_texture_copy_vertex_shader || !m_efb_copy_vertex_shader) return false; @@ -1462,19 +1463,20 @@ bool ShaderCache::CompileSharedPipelines() { m_texcoord_geometry_shader = g_gfx->CreateShaderFromSource( ShaderStage::Geometry, FramebufferShaderGen::GeneratePassthroughGeometryShader(1, 0), - "Texcoord passthrough geometry shader"); + nullptr, "Texcoord passthrough geometry shader"); m_color_geometry_shader = g_gfx->CreateShaderFromSource( ShaderStage::Geometry, FramebufferShaderGen::GeneratePassthroughGeometryShader(0, 1), - "Color passthrough geometry shader"); + nullptr, "Color passthrough geometry shader"); if (!m_texcoord_geometry_shader || !m_color_geometry_shader) return false; } m_texture_copy_pixel_shader = g_gfx->CreateShaderFromSource( - ShaderStage::Pixel, FramebufferShaderGen::GenerateTextureCopyPixelShader(), + ShaderStage::Pixel, FramebufferShaderGen::GenerateTextureCopyPixelShader(), nullptr, "Texture copy pixel shader"); m_color_pixel_shader = g_gfx->CreateShaderFromSource( - ShaderStage::Pixel, FramebufferShaderGen::GenerateColorPixelShader(), "Color pixel shader"); + ShaderStage::Pixel, FramebufferShaderGen::GenerateColorPixelShader(), nullptr, + "Color pixel shader"); if (!m_texture_copy_pixel_shader || !m_color_pixel_shader) return false; @@ -1511,7 +1513,7 @@ bool ShaderCache::CompileSharedPipelines() auto shader = g_gfx->CreateShaderFromSource( ShaderStage::Pixel, TextureConversionShaderTiled::GeneratePaletteConversionShader(format, m_api_type), - fmt::format("Palette conversion pixel shader: {}", format)); + nullptr, fmt::format("Palette conversion pixel shader: {}", format)); if (!shader) return false; @@ -1546,7 +1548,7 @@ const AbstractPipeline* ShaderCache::GetTextureReinterpretPipeline(TextureFormat return nullptr; std::unique_ptr<AbstractShader> shader = g_gfx->CreateShaderFromSource( - ShaderStage::Pixel, shader_source, + ShaderStage::Pixel, shader_source, nullptr, fmt::format("Texture reinterpret pixel shader: {} to {}", from_format, to_format)); if (!shader) return nullptr; @@ -1586,7 +1588,7 @@ ShaderCache::GetTextureDecodingShader(TextureFormat format, fmt::format("Texture decoding compute shader: {}", format); std::unique_ptr<AbstractShader> shader = - g_gfx->CreateShaderFromSource(ShaderStage::Compute, shader_source, name); + g_gfx->CreateShaderFromSource(ShaderStage::Compute, shader_source, nullptr, name); if (!shader) return nullptr; |
