mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-11 16:49:27 +01:00
Remove the leftover geometry shader scaffolding
Nothing has generated or used a geometry shader since the GS paths were removed - GeometryShaderGenerator is gone, and ShaderWriter's BeginGSMain/EndGSMain had no callers at all. Removes ShaderStage::Geometry and everything hanging off it: the GS preambles and GSMain helpers in ShaderWriter, the stage mappings in all three thin3d backends, the D3D11 geometry shader plumbing (curGS_, the pipeline and module members, gs_4_0 compilation), CreateGeometryShaderD3D11, the unused PipelineFlags::USES_GEOMETRY_SHADER and PipelineManagerVulkan's UsesGeometryShader(). Also stop enabling the Vulkan geometryShader device feature, since we no longer have any use for it. Kept on purpose: the device feature is still listed in the feature dumps (like other capabilities we don't use), and the Vulkan shader cache header keeps its now-always-zero geometry shader count so the on-disk format stays compatible.
This commit is contained in:
1 parent
2820fa9467
commit
de0dc2d7d4
15 files changed
+4
-136
No files matched your search
@@ -52,32 +52,6 @@ static const char * const vulkan_glsl_preamble_vs =
|
||||
"precision highp float;\n"
|
||||
"\n";
|
||||
|
||||
static const char * const hlsl_preamble_gs =
|
||||
"#define vec2 float2\n"
|
||||
"#define vec3 float3\n"
|
||||
"#define vec4 float4\n"
|
||||
"#define ivec2 int2\n"
|
||||
"#define ivec4 int4\n"
|
||||
"#define mat2 float2x2\n"
|
||||
"#define mat4 float4x4\n"
|
||||
"#define mat3x4 float4x3\n" // note how the conventions are backwards
|
||||
"#define splat3(x) vec3(x, x, x)\n"
|
||||
"#define lowp\n"
|
||||
"#define mediump\n"
|
||||
"#define highp\n"
|
||||
"#define inversesqrt rsqrt\n"
|
||||
"#define floatBitsToUint asuint\n"
|
||||
"#define uintBitsToFloat asfloat\n"
|
||||
"\n";
|
||||
|
||||
static const char * const vulkan_glsl_preamble_gs =
|
||||
"#extension GL_ARB_separate_shader_objects : enable\n"
|
||||
"#extension GL_ARB_shading_language_420pack : enable\n"
|
||||
"#define mul(x, y) ((x) * (y))\n"
|
||||
"#define splat3(x) vec3(x)\n"
|
||||
"precision highp float;\n"
|
||||
"\n";
|
||||
|
||||
static const char * const hlsl_preamble_vs =
|
||||
"#define vec2 float2\n"
|
||||
"#define vec3 float3\n"
|
||||
@@ -138,9 +112,6 @@ void ShaderWriter::Preamble(Slice<const char *> extensions) {
|
||||
case ShaderStage::Fragment:
|
||||
W(vulkan_glsl_preamble_fs);
|
||||
break;
|
||||
case ShaderStage::Geometry:
|
||||
W(vulkan_glsl_preamble_gs);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -154,9 +125,6 @@ void ShaderWriter::Preamble(Slice<const char *> extensions) {
|
||||
W(hlsl_preamble_fs);
|
||||
W(hlsl_d3d11_preamble_fs);
|
||||
break;
|
||||
case ShaderStage::Geometry:
|
||||
W(hlsl_preamble_gs);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -187,11 +155,6 @@ void ShaderWriter::Preamble(Slice<const char *> extensions) {
|
||||
}
|
||||
C("#define gl_VertexIndex gl_VertexID\n");
|
||||
break;
|
||||
case ShaderStage::Geometry:
|
||||
if (lang_.gles) {
|
||||
C("precision highp float;\n");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -340,43 +303,6 @@ void ShaderWriter::BeginFSMain(Slice<UniformDef> uniforms, Slice<VaryingDef> var
|
||||
}
|
||||
}
|
||||
|
||||
void ShaderWriter::BeginGSMain(Slice<VaryingDef> varyings, Slice<VaryingDef> outVaryings) {
|
||||
_assert_(this->stage_ == ShaderStage::Geometry);
|
||||
switch (lang_.shaderLanguage) {
|
||||
case HLSL_D3D11:
|
||||
// Untested, but should work.
|
||||
C("\nstruct GS_OUTPUT {\n");
|
||||
for (auto &varying : outVaryings) {
|
||||
F(" %s %s : %s;\n", varying.type, varying.name, semanticNames[varying.semantic]);
|
||||
}
|
||||
F(" vec4 pos : %s;\n", lang_.shaderLanguage == HLSL_D3D11 ? "SV_Position" : "POSITION");
|
||||
C("};\n");
|
||||
C("#define EmitVertex() emit.Append(gsout)\n");
|
||||
|
||||
C("void main(");
|
||||
for (auto &varying : varyings) {
|
||||
F(" in %s %s : %s, ", varying.type, varying.name, semanticNames[varying.semantic]);
|
||||
}
|
||||
C("inout TriangleStream<GS_OUTPUT> emit) {\n");
|
||||
C(" GS_OUTPUT gsout;\n");
|
||||
break;
|
||||
case GLSL_VULKAN:
|
||||
for (auto &varying : varyings) {
|
||||
F("layout(location = %d) %s in %s %s[]; // %s\n", varying.index, varying.precision ? varying.precision : "", varying.type, varying.name, semanticNames[varying.semantic]);
|
||||
}
|
||||
for (auto &varying : outVaryings) {
|
||||
F("layout(location = %d) %s out %s %s; // %s\n", varying.index, varying.precision ? varying.precision : "", varying.type, varying.name, semanticNames[varying.semantic]);
|
||||
}
|
||||
C("\nvoid main() {\n");
|
||||
break;
|
||||
case GLSL_3xx:
|
||||
C("\nvoid main() {\n");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ShaderWriter::EndVSMain(Slice<VaryingDef> varyings) {
|
||||
_assert_(this->stage_ == ShaderStage::Vertex);
|
||||
switch (lang_.shaderLanguage) {
|
||||
@@ -419,11 +345,6 @@ void ShaderWriter::EndFSMain(const char *vec4_color_variable) {
|
||||
C("}\n");
|
||||
}
|
||||
|
||||
void ShaderWriter::EndGSMain() {
|
||||
_assert_(this->stage_ == ShaderStage::Geometry);
|
||||
C("}\n");
|
||||
}
|
||||
|
||||
void ShaderWriter::HighPrecisionFloat() {
|
||||
if ((ShaderLanguageIsOpenGL(lang_.shaderLanguage) && lang_.gles) || lang_.shaderLanguage == GLSL_VULKAN) {
|
||||
C("precision highp float;\n");
|
||||
|
||||
Reference in new issue
Block a user