gl_shader_gen: Always declare extensions after the version declaration
This addresses a bug on geometry shaders where code was being written before all #extension declarations were done. Ref to #2523
This commit is contained in:
		| @@ -170,7 +170,8 @@ GLShader::ProgramResult CreateProgram(const Device& device, Maxwell::ShaderProgr | ||||
| CachedProgram SpecializeShader(const std::string& code, const GLShader::ShaderEntries& entries, | ||||
|                                Maxwell::ShaderProgram program_type, BaseBindings base_bindings, | ||||
|                                GLenum primitive_mode, bool hint_retrievable = false) { | ||||
|     std::string source = "#version 430 core\n"; | ||||
|     std::string source = "#version 430 core\n" | ||||
|                          "#extension GL_ARB_separate_shader_objects : enable\n\n"; | ||||
|     source += fmt::format("#define EMULATION_UBO_BINDING {}\n", base_bindings.cbuf++); | ||||
|  | ||||
|     for (const auto& cbuf : entries.const_buffers) { | ||||
|   | ||||
| @@ -19,8 +19,7 @@ static constexpr u32 PROGRAM_OFFSET{10}; | ||||
| ProgramResult GenerateVertexShader(const Device& device, const ShaderSetup& setup) { | ||||
|     const std::string id = fmt::format("{:016x}", setup.program.unique_identifier); | ||||
|  | ||||
|     std::string out = "#extension GL_ARB_separate_shader_objects : enable\n\n"; | ||||
|     out += "// Shader Unique Id: VS" + id + "\n\n"; | ||||
|     std::string out = "// Shader Unique Id: VS" + id + "\n\n"; | ||||
|     out += GetCommonDeclarations(); | ||||
|  | ||||
|     out += R"( | ||||
| @@ -82,8 +81,7 @@ void main() { | ||||
| ProgramResult GenerateGeometryShader(const Device& device, const ShaderSetup& setup) { | ||||
|     const std::string id = fmt::format("{:016x}", setup.program.unique_identifier); | ||||
|  | ||||
|     std::string out = "#extension GL_ARB_separate_shader_objects : enable\n\n"; | ||||
|     out += "// Shader Unique Id: GS" + id + "\n\n"; | ||||
|     std::string out = "// Shader Unique Id: GS" + id + "\n\n"; | ||||
|     out += GetCommonDeclarations(); | ||||
|  | ||||
|     out += R"( | ||||
| @@ -113,8 +111,7 @@ void main() { | ||||
| ProgramResult GenerateFragmentShader(const Device& device, const ShaderSetup& setup) { | ||||
|     const std::string id = fmt::format("{:016x}", setup.program.unique_identifier); | ||||
|  | ||||
|     std::string out = "#extension GL_ARB_separate_shader_objects : enable\n\n"; | ||||
|     out += "// Shader Unique Id: FS" + id + "\n\n"; | ||||
|     std::string out = "// Shader Unique Id: FS" + id + "\n\n"; | ||||
|     out += GetCommonDeclarations(); | ||||
|  | ||||
|     out += R"( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
					ReinUsesLisp