summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/ShaderCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/ShaderCache.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/ShaderCache.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/ShaderCache.cpp b/Source/Core/VideoBackends/Vulkan/ShaderCache.cpp
index eb03177be9..33181e920c 100644
--- a/Source/Core/VideoBackends/Vulkan/ShaderCache.cpp
+++ b/Source/Core/VideoBackends/Vulkan/ShaderCache.cpp
@@ -795,7 +795,19 @@ bool ShaderCache::CompileSharedShaders()
}
)";
- std::string header = GetUtilityShaderHeader();
+ static const char CLEAR_FRAGMENT_SHADER_SOURCE[] = R"(
+ layout(location = 0) in float3 uv0;
+ layout(location = 1) in float4 col0;
+ layout(location = 0) out float4 ocol0;
+
+ void main()
+ {
+ ocol0 = col0;
+ }
+
+ )";
+
+ const std::string header = GetUtilityShaderHeader();
m_screen_quad_vertex_shader =
Util::CompileAndCreateVertexShader(header + SCREEN_QUAD_VERTEX_SHADER_SOURCE);
@@ -820,6 +832,11 @@ bool ShaderCache::CompileSharedShaders()
}
}
+ m_clear_fragment_shader =
+ Util::CompileAndCreateFragmentShader(header + CLEAR_FRAGMENT_SHADER_SOURCE);
+ if (m_clear_fragment_shader == VK_NULL_HANDLE)
+ return false;
+
return true;
}
@@ -837,5 +854,6 @@ void ShaderCache::DestroySharedShaders()
DestroyShader(m_passthrough_vertex_shader);
DestroyShader(m_screen_quad_geometry_shader);
DestroyShader(m_passthrough_geometry_shader);
+ DestroyShader(m_clear_fragment_shader);
}
-}
+} // namespace Vulkan