diff options
| author | Lioncash <mathew1800@gmail.com> | 2019-05-30 03:52:05 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2019-05-30 04:16:17 -0400 |
| commit | d6a60050ffd667ec1bd9a1759fb103ab0af9cfce (patch) | |
| tree | a8de4b3a68858828c64a5b55aa34ce1e9efdb422 /Source/Core/VideoBackends/Vulkan/VKShader.cpp | |
| parent | e60268bd4274de510f5214d6eedafba30a253984 (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.cpp | 16 |
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, |
