summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VKShader.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-05-30 03:52:05 -0400
committerLioncash <mathew1800@gmail.com>2019-05-30 04:16:17 -0400
commitd6a60050ffd667ec1bd9a1759fb103ab0af9cfce (patch)
treea8de4b3a68858828c64a5b55aa34ce1e9efdb422 /Source/Core/VideoBackends/Vulkan/VKShader.cpp
parente60268bd4274de510f5214d6eedafba30a253984 (diff)
VideoVulkan/ShaderCompiler: Use a std::optional instead of bool+out variable
Now that we utilize C++17, we can simply return an optional containing the code instead of using an out variable and a boolean result, essentially combining them into one. This provides a much more straightforward interface.
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/VKShader.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/VKShader.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/VKShader.cpp b/Source/Core/VideoBackends/Vulkan/VKShader.cpp
index 15fc90f61f..d0fdb285f6 100644
--- a/Source/Core/VideoBackends/Vulkan/VKShader.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VKShader.cpp
@@ -88,31 +88,29 @@ static std::unique_ptr<VKShader> CreateShaderObject(ShaderStage stage,
std::unique_ptr<VKShader> VKShader::CreateFromSource(ShaderStage stage, std::string_view source)
{
- ShaderCompiler::SPIRVCodeVector spv;
- bool result;
+ std::optional<ShaderCompiler::SPIRVCodeVector> spv;
switch (stage)
{
case ShaderStage::Vertex:
- result = ShaderCompiler::CompileVertexShader(&spv, source);
+ spv = ShaderCompiler::CompileVertexShader(source);
break;
case ShaderStage::Geometry:
- result = ShaderCompiler::CompileGeometryShader(&spv, source);
+ spv = ShaderCompiler::CompileGeometryShader(source);
break;
case ShaderStage::Pixel:
- result = ShaderCompiler::CompileFragmentShader(&spv, source);
+ spv = ShaderCompiler::CompileFragmentShader(source);
break;
case ShaderStage::Compute:
- result = ShaderCompiler::CompileComputeShader(&spv, source);
+ spv = ShaderCompiler::CompileComputeShader(source);
break;
default:
- result = false;
break;
}
- if (!result)
+ if (!spv)
return nullptr;
- return CreateShaderObject(stage, std::move(spv));
+ return CreateShaderObject(stage, std::move(*spv));
}
std::unique_ptr<VKShader> VKShader::CreateFromBinary(ShaderStage stage, const void* data,