forked from suyu/suyu
3fd5998d84
Quite a few unused includes have built up over time, particularly on core/memory.h. Removing these includes means the source files including those files will no longer need to be rebuilt if they're changed, making compilation slightly faster in this scenario.
60 lines
1.5 KiB
C++
60 lines
1.5 KiB
C++
// Copyright 2018 yuzu Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include "common/common_types.h"
|
|
#include "video_core/renderer_opengl/gl_shader_decompiler.h"
|
|
#include "video_core/shader/shader_ir.h"
|
|
|
|
namespace OpenGL::GLShader {
|
|
|
|
using VideoCommon::Shader::ProgramCode;
|
|
|
|
struct ShaderSetup {
|
|
explicit ShaderSetup(ProgramCode program_code) {
|
|
program.code = std::move(program_code);
|
|
}
|
|
|
|
struct {
|
|
ProgramCode code;
|
|
ProgramCode code_b; // Used for dual vertex shaders
|
|
u64 unique_identifier;
|
|
} program;
|
|
|
|
/// Used in scenarios where we have a dual vertex shaders
|
|
void SetProgramB(ProgramCode program_b) {
|
|
program.code_b = std::move(program_b);
|
|
has_program_b = true;
|
|
}
|
|
|
|
bool IsDualProgram() const {
|
|
return has_program_b;
|
|
}
|
|
|
|
private:
|
|
bool has_program_b{};
|
|
};
|
|
|
|
/**
|
|
* Generates the GLSL vertex shader program source code for the given VS program
|
|
* @returns String of the shader source code
|
|
*/
|
|
ProgramResult GenerateVertexShader(const ShaderSetup& setup);
|
|
|
|
/**
|
|
* Generates the GLSL geometry shader program source code for the given GS program
|
|
* @returns String of the shader source code
|
|
*/
|
|
ProgramResult GenerateGeometryShader(const ShaderSetup& setup);
|
|
|
|
/**
|
|
* Generates the GLSL fragment shader program source code for the given FS program
|
|
* @returns String of the shader source code
|
|
*/
|
|
ProgramResult GenerateFragmentShader(const ShaderSetup& setup);
|
|
|
|
} // namespace OpenGL::GLShader
|