mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00: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
@@ -113,20 +113,3 @@ HRESULT CreateComputeShaderD3D11(ID3D11Device *device, const char *code, size_t
|
||||
|
||||
return device->CreateComputeShader(byteCode.data(), byteCode.size(), nullptr, ppComputeShader);
|
||||
}
|
||||
|
||||
HRESULT CreateGeometryShaderD3D11(ID3D11Device *device, const char *code, size_t codeSize, D3D_FEATURE_LEVEL featureLevel, UINT flags, ID3D11GeometryShader **ppGeometryShader) {
|
||||
if (ppGeometryShader)
|
||||
*ppGeometryShader = nullptr;
|
||||
if (featureLevel <= D3D_FEATURE_LEVEL_9_3)
|
||||
return S_FALSE;
|
||||
std::string errorMessage;
|
||||
std::vector<uint8_t> byteCode = CompileShaderToBytecodeD3D11(code, codeSize, "gs_5_0", flags, &errorMessage);
|
||||
if (byteCode.empty()) {
|
||||
if (!errorMessage.empty()) {
|
||||
ERROR_LOG(Log::G3D, "%s", errorMessage.c_str());
|
||||
}
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
return device->CreateGeometryShader(byteCode.data(), byteCode.size(), nullptr, ppGeometryShader);
|
||||
}
|
||||
@@ -78,7 +78,6 @@ std::vector<uint8_t> CompileShaderToBytecodeD3D11(const char *code, size_t codeS
|
||||
HRESULT CreateVertexShaderD3D11(ID3D11Device *device, const char *code, size_t codeSize, std::vector<uint8_t> *byteCodeOut, D3D_FEATURE_LEVEL featureLevel, UINT flags, ID3D11VertexShader **);
|
||||
HRESULT CreatePixelShaderD3D11(ID3D11Device *device, const char *code, size_t codeSize, D3D_FEATURE_LEVEL featureLevel, UINT flags, ID3D11PixelShader **);
|
||||
HRESULT CreateComputeShaderD3D11(ID3D11Device *device, const char *code, size_t codeSize, D3D_FEATURE_LEVEL featureLevel, UINT flags, ID3D11ComputeShader **);
|
||||
HRESULT CreateGeometryShaderD3D11(ID3D11Device *device, const char *code, size_t codeSize, D3D_FEATURE_LEVEL featureLevel, UINT flags, ID3D11GeometryShader **);
|
||||
|
||||
#define ASSERT_SUCCESS(x) \
|
||||
if (!SUCCEEDED((x))) \
|
||||
|
||||
@@ -37,7 +37,6 @@ class VulkanRenderManager;
|
||||
class VulkanContext;
|
||||
class VulkanVertexShader;
|
||||
class VulkanFragmentShader;
|
||||
class VulkanGeometryShader;
|
||||
class ShaderManagerVulkan;
|
||||
class DrawEngineCommon;
|
||||
|
||||
@@ -73,7 +72,6 @@ struct VulkanPipeline {
|
||||
|
||||
bool UsesBlendConstant() const { return (pipelineFlags & PipelineFlags::USES_BLEND_CONSTANT) != 0; }
|
||||
bool UsesDepthStencil() const { return (pipelineFlags & PipelineFlags::USES_DEPTH_STENCIL) != 0; }
|
||||
bool UsesGeometryShader() const { return (pipelineFlags & PipelineFlags::USES_GEOMETRY_SHADER) != 0; }
|
||||
bool UsesDiscard() const { return (pipelineFlags & PipelineFlags::USES_DISCARD) != 0; }
|
||||
bool UsesFlatShading() const { return (pipelineFlags & PipelineFlags::USES_FLAT_SHADING) != 0; }
|
||||
|
||||
|
||||
@@ -73,7 +73,6 @@ static Promise<VkShaderModule> *CompileShaderModuleAsync(VulkanContext *vulkan,
|
||||
switch (stage) {
|
||||
case VK_SHADER_STAGE_VERTEX_BIT: createTag = "game_vertex"; break;
|
||||
case VK_SHADER_STAGE_FRAGMENT_BIT: createTag = "game_fragment"; break;
|
||||
case VK_SHADER_STAGE_GEOMETRY_BIT: createTag = "game_geometry"; break;
|
||||
case VK_SHADER_STAGE_COMPUTE_BIT: createTag = "game_compute"; break;
|
||||
default: break;
|
||||
}
|
||||
@@ -378,7 +377,7 @@ struct VulkanCacheHeader {
|
||||
uint32_t detectFlags;
|
||||
int numVertexShaders;
|
||||
int numFragmentShaders;
|
||||
int numGeometryShaders;
|
||||
int unused_numGeometryShaders; // Always 0, kept so the file format stays compatible.
|
||||
};
|
||||
|
||||
bool ShaderManagerVulkan::LoadCacheFlags(FILE *f, DrawEngineVulkan *drawEngine) {
|
||||
@@ -464,7 +463,7 @@ bool ShaderManagerVulkan::LoadCache(FILE *f) {
|
||||
}
|
||||
}
|
||||
|
||||
NOTICE_LOG(Log::G3D, "ShaderCache: Loaded %d vertex, %d fragment shaders and %d geometry shaders (failed %d)", header.numVertexShaders, header.numFragmentShaders, header.numGeometryShaders, failCount);
|
||||
NOTICE_LOG(Log::G3D, "ShaderCache: Loaded %d vertex and %d fragment shaders (failed %d)", header.numVertexShaders, header.numFragmentShaders, failCount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -476,7 +475,7 @@ void ShaderManagerVulkan::SaveCache(FILE *f, DrawEngineVulkan *drawEngine) {
|
||||
header.detectFlags = 0;
|
||||
header.numVertexShaders = (int)vsCache_.size();
|
||||
header.numFragmentShaders = (int)fsCache_.size();
|
||||
header.numGeometryShaders = 0;
|
||||
header.unused_numGeometryShaders = 0;
|
||||
bool writeFailed = fwrite(&header, sizeof(header), 1, f) != 1;
|
||||
vsCache_.Iterate([&](const VShaderID &id, VulkanVertexShader *vs) {
|
||||
writeFailed = writeFailed || fwrite(&id, sizeof(id), 1, f) != 1;
|
||||
|
||||
Reference in new issue
Block a user