glsl_decompiler: Fixup geometry shaders
This commit is contained in:
parent
ea78c78253
commit
dbed6c6485
|
@ -84,11 +84,7 @@ ProgramResult GenerateGeometryShader(const ShaderSetup& setup) {
|
|||
out += "#extension GL_ARB_separate_shader_objects : enable\n";
|
||||
out += GetCommonDeclarations();
|
||||
|
||||
out += R"(out gl_PerVertex {
|
||||
vec4 gl_Position;
|
||||
};
|
||||
|
||||
layout (location = 0) in vec4 gs_position[];
|
||||
out += R"(layout (location = 0) in vec4 gs_position[];
|
||||
layout (location = 0) out vec4 position;
|
||||
|
||||
layout (std140) uniform gs_config {
|
||||
|
|
|
@ -207,6 +207,22 @@ private:
|
|||
if (stage != ShaderStage::Vertex)
|
||||
return;
|
||||
|
||||
DeclareVertexRedeclarations();
|
||||
}
|
||||
|
||||
void DeclareGeometry() {
|
||||
if (stage != ShaderStage::Geometry)
|
||||
return;
|
||||
|
||||
const auto topology = GetTopologyName(header.common3.output_topology);
|
||||
const auto max_vertices = std::to_string(header.common4.max_output_vertices);
|
||||
code.AddLine("layout (" + topology + ", max_vertices = " + max_vertices + ") out;");
|
||||
code.AddNewLine();
|
||||
|
||||
DeclareVertexRedeclarations();
|
||||
}
|
||||
|
||||
void DeclareVertexRedeclarations() {
|
||||
bool clip_distances_declared = false;
|
||||
|
||||
code.AddLine("out gl_PerVertex {");
|
||||
|
@ -229,16 +245,6 @@ private:
|
|||
code.AddNewLine();
|
||||
}
|
||||
|
||||
void DeclareGeometry() {
|
||||
if (stage != ShaderStage::Geometry)
|
||||
return;
|
||||
|
||||
const auto topology = GetTopologyName(header.common3.output_topology);
|
||||
const auto max_vertices = std::to_string(header.common4.max_output_vertices);
|
||||
code.AddLine("layout (" + topology + ", max_vertices = " + max_vertices + ") out;");
|
||||
code.AddNewLine();
|
||||
}
|
||||
|
||||
void DeclareRegisters() {
|
||||
const auto& registers = ir.GetRegisters();
|
||||
for (const u32 gpr : registers) {
|
||||
|
|
Reference in New Issue