summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/ShaderCache.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2025-09-27 00:24:05 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2025-10-26 22:47:23 -0500
commit96fe6a157549761c37dd65e28f76938b4934a997 (patch)
tree956918d0c680e84941b6dc5dee410d0416f90dda /Source/Core/VideoCommon/ShaderCache.cpp
parentba2acb872c294a7a01f8d24cd2a8cd9f4ec6f73a (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.cpp34
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;