// Copyright 2016 Dolphin Emulator Project // Copyright 2020 DuckStation Emulator Project // Licensed under GPLv2+ // Refer to the LICENSE file included. #pragma once #include "../types.h" #include #include #include namespace Vulkan::ShaderCompiler { // Shader types enum class Type { Vertex, Geometry, Fragment, Compute }; void DeinitializeGlslang(); // SPIR-V compiled code type using SPIRVCodeType = u32; using SPIRVCodeVector = std::vector; // Compile a vertex shader to SPIR-V. std::optional CompileVertexShader(std::string_view source_code); // Compile a geometry shader to SPIR-V. std::optional CompileGeometryShader(std::string_view source_code); // Compile a fragment shader to SPIR-V. std::optional CompileFragmentShader(std::string_view source_code); // Compile a compute shader to SPIR-V. std::optional CompileComputeShader(std::string_view source_code); std::optional CompileShader(Type type, std::string_view source_code, bool debug); } // namespace Vulkan::ShaderCompiler