summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/ShaderCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/ShaderCache.cpp')
-rw-r--r--Source/Core/VideoCommon/ShaderCache.cpp49
1 files changed, 32 insertions, 17 deletions
diff --git a/Source/Core/VideoCommon/ShaderCache.cpp b/Source/Core/VideoCommon/ShaderCache.cpp
index 0a9dc0b856..eada4c970b 100644
--- a/Source/Core/VideoCommon/ShaderCache.cpp
+++ b/Source/Core/VideoCommon/ShaderCache.cpp
@@ -3,6 +3,8 @@
#include "VideoCommon/ShaderCache.h"
+#include <fmt/format.h>
+
#include "Common/Assert.h"
#include "Common/FileUtil.h"
#include "Common/MsgHandler.h"
@@ -539,7 +541,8 @@ 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_renderer->CreateShaderFromSource(ShaderStage::Geometry, source_code.GetBuffer());
+ g_renderer->CreateShaderFromSource(ShaderStage::Geometry, source_code.GetBuffer(),
+ fmt::format("Geometry shader: {}", *uid.GetUidData()));
auto& entry = m_gs_cache.shader_map[uid];
entry.pending = false;
@@ -1158,7 +1161,9 @@ ShaderCache::GetEFBCopyToVRAMPipeline(const TextureConversionShaderGen::TCShader
return iter->second.get();
auto shader_code = TextureConversionShaderGen::GeneratePixelShader(m_api_type, uid.GetUidData());
- auto shader = g_renderer->CreateShaderFromSource(ShaderStage::Pixel, shader_code.GetBuffer());
+ auto shader = g_renderer->CreateShaderFromSource(
+ ShaderStage::Pixel, shader_code.GetBuffer(),
+ fmt::format("EFB copy to VRAM pixel shader: {}", *uid.GetUidData()));
if (!shader)
{
m_efb_copy_to_vram_pipelines.emplace(uid, nullptr);
@@ -1188,7 +1193,8 @@ const AbstractPipeline* ShaderCache::GetEFBCopyToRAMPipeline(const EFBCopyParams
const std::string shader_code =
TextureConversionShaderTiled::GenerateEncodingShader(uid, m_api_type);
- const auto shader = g_renderer->CreateShaderFromSource(ShaderStage::Pixel, shader_code);
+ const auto shader = g_renderer->CreateShaderFromSource(
+ ShaderStage::Pixel, shader_code, fmt::format("EFB copy to RAM pixel shader: {}", uid));
if (!shader)
{
m_efb_copy_to_ram_pipelines.emplace(uid, nullptr);
@@ -1210,29 +1216,34 @@ const AbstractPipeline* ShaderCache::GetEFBCopyToRAMPipeline(const EFBCopyParams
bool ShaderCache::CompileSharedPipelines()
{
m_screen_quad_vertex_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Vertex, FramebufferShaderGen::GenerateScreenQuadVertexShader());
+ ShaderStage::Vertex, FramebufferShaderGen::GenerateScreenQuadVertexShader(),
+ "Screen quad vertex shader");
m_texture_copy_vertex_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Vertex, FramebufferShaderGen::GenerateTextureCopyVertexShader());
+ ShaderStage::Vertex, FramebufferShaderGen::GenerateTextureCopyVertexShader(),
+ "Texture copy vertex shader");
m_efb_copy_vertex_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Vertex,
- TextureConversionShaderGen::GenerateVertexShader(m_api_type).GetBuffer());
+ ShaderStage::Vertex, TextureConversionShaderGen::GenerateVertexShader(m_api_type).GetBuffer(),
+ "EFB copy vertex shader");
if (!m_screen_quad_vertex_shader || !m_texture_copy_vertex_shader || !m_efb_copy_vertex_shader)
return false;
if (UseGeometryShaderForEFBCopies())
{
m_texcoord_geometry_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Geometry, FramebufferShaderGen::GeneratePassthroughGeometryShader(1, 0));
+ ShaderStage::Geometry, FramebufferShaderGen::GeneratePassthroughGeometryShader(1, 0),
+ "Texcoord passthrough geometry shader");
m_color_geometry_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Geometry, FramebufferShaderGen::GeneratePassthroughGeometryShader(0, 1));
+ ShaderStage::Geometry, FramebufferShaderGen::GeneratePassthroughGeometryShader(0, 1),
+ "Color passthrough geometry shader");
if (!m_texcoord_geometry_shader || !m_color_geometry_shader)
return false;
}
m_texture_copy_pixel_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Pixel, FramebufferShaderGen::GenerateTextureCopyPixelShader());
+ ShaderStage::Pixel, FramebufferShaderGen::GenerateTextureCopyPixelShader(),
+ "Texture copy pixel shader");
m_color_pixel_shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Pixel, FramebufferShaderGen::GenerateColorPixelShader());
+ ShaderStage::Pixel, FramebufferShaderGen::GenerateColorPixelShader(), "Color pixel shader");
if (!m_texture_copy_pixel_shader || !m_color_pixel_shader)
return false;
@@ -1265,9 +1276,11 @@ bool ShaderCache::CompileSharedPipelines()
for (size_t i = 0; i < NUM_PALETTE_CONVERSION_SHADERS; i++)
{
+ TLUTFormat format = static_cast<TLUTFormat>(i);
auto shader = g_renderer->CreateShaderFromSource(
- ShaderStage::Pixel, TextureConversionShaderTiled::GeneratePaletteConversionShader(
- static_cast<TLUTFormat>(i), m_api_type));
+ ShaderStage::Pixel,
+ TextureConversionShaderTiled::GeneratePaletteConversionShader(format, m_api_type),
+ fmt::format("Palette conversion pixel shader: {}", format));
if (!shader)
return false;
@@ -1303,8 +1316,9 @@ const AbstractPipeline* ShaderCache::GetTextureReinterpretPipeline(TextureFormat
return nullptr;
}
- std::unique_ptr<AbstractShader> shader =
- g_renderer->CreateShaderFromSource(ShaderStage::Pixel, shader_source);
+ std::unique_ptr<AbstractShader> shader = g_renderer->CreateShaderFromSource(
+ ShaderStage::Pixel, shader_source,
+ fmt::format("Texture reinterpret pixel shader: {} to {}", from_format, to_format));
if (!shader)
{
m_texture_reinterpret_pipelines.emplace(key, nullptr);
@@ -1341,8 +1355,9 @@ const AbstractShader* ShaderCache::GetTextureDecodingShader(TextureFormat format
return nullptr;
}
- std::unique_ptr<AbstractShader> shader =
- g_renderer->CreateShaderFromSource(ShaderStage::Compute, shader_source);
+ std::unique_ptr<AbstractShader> shader = g_renderer->CreateShaderFromSource(
+ ShaderStage::Compute, shader_source,
+ fmt::format("Texture decoding compute shader: {}, {}", format, palette_format));
if (!shader)
{
m_texture_decoding_shaders.emplace(key, nullptr);