diff --git a/GPU/Common/ShaderCommon.h b/GPU/Common/ShaderCommon.h index 025576ea6f..380a9e240a 100644 --- a/GPU/Common/ShaderCommon.h +++ b/GPU/Common/ShaderCommon.h @@ -18,6 +18,8 @@ #pragma once #include +#include +#include namespace Draw { class DrawContext; @@ -132,6 +134,9 @@ public: virtual void DeviceLost() = 0; virtual void DeviceRestore(Draw::DrawContext *draw) = 0; // must set draw_ to draw + virtual std::vector DebugGetShaderIDs(DebugShaderType type) = 0; + virtual std::string DebugGetShaderString(std::string id, DebugShaderType type, DebugShaderStringType stringType) = 0; + protected: Draw::DrawContext *draw_ = nullptr; }; diff --git a/GPU/D3D11/GPU_D3D11.cpp b/GPU/D3D11/GPU_D3D11.cpp index fd8085f2e8..28043a1d68 100644 --- a/GPU/D3D11/GPU_D3D11.cpp +++ b/GPU/D3D11/GPU_D3D11.cpp @@ -166,25 +166,3 @@ void GPU_D3D11::GetStats(char *buffer, size_t bufsize) { shaderManagerD3D11_->GetNumFragmentShaders() ); } - -std::vector GPU_D3D11::DebugGetShaderIDs(DebugShaderType type) { - switch (type) { - case SHADER_TYPE_VERTEXLOADER: - return drawEngine_.DebugGetVertexLoaderIDs(); - case SHADER_TYPE_TEXTURE: - return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type); - default: - return shaderManagerD3D11_->DebugGetShaderIDs(type); - } -} - -std::string GPU_D3D11::DebugGetShaderString(std::string id, DebugShaderType type, DebugShaderStringType stringType) { - switch (type) { - case SHADER_TYPE_VERTEXLOADER: - return drawEngine_.DebugGetVertexLoaderString(id, stringType); - case SHADER_TYPE_TEXTURE: - return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType); - default: - return shaderManagerD3D11_->DebugGetShaderString(id, type, stringType); - } -} diff --git a/GPU/D3D11/GPU_D3D11.h b/GPU/D3D11/GPU_D3D11.h index 434a3c6303..782ef7f029 100644 --- a/GPU/D3D11/GPU_D3D11.h +++ b/GPU/D3D11/GPU_D3D11.h @@ -40,10 +40,6 @@ public: void DeviceLost() override; // Only happens on Android. Drop all textures and shaders. void DeviceRestore() override; - // Using string because it's generic - makes no assumptions on the size of the shader IDs of this backend. - std::vector DebugGetShaderIDs(DebugShaderType shader) override; - std::string DebugGetShaderString(std::string id, DebugShaderType shader, DebugShaderStringType stringType) override; - protected: void FinishDeferred() override; diff --git a/GPU/Directx9/GPU_DX9.cpp b/GPU/Directx9/GPU_DX9.cpp index 928a399635..1c748980c0 100644 --- a/GPU/Directx9/GPU_DX9.cpp +++ b/GPU/Directx9/GPU_DX9.cpp @@ -146,25 +146,3 @@ void GPU_DX9::GetStats(char *buffer, size_t bufsize) { shaderManagerDX9_->GetNumFragmentShaders() ); } - -std::vector GPU_DX9::DebugGetShaderIDs(DebugShaderType type) { - switch (type) { - case SHADER_TYPE_VERTEXLOADER: - return drawEngine_.DebugGetVertexLoaderIDs(); - case SHADER_TYPE_TEXTURE: - return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type); - default: - return shaderManagerDX9_->DebugGetShaderIDs(type); - } -} - -std::string GPU_DX9::DebugGetShaderString(std::string id, DebugShaderType type, DebugShaderStringType stringType) { - switch (type) { - case SHADER_TYPE_VERTEXLOADER: - return drawEngine_.DebugGetVertexLoaderString(id, stringType); - case SHADER_TYPE_TEXTURE: - return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType); - default: - return shaderManagerDX9_->DebugGetShaderString(id, type, stringType); - } -} diff --git a/GPU/Directx9/GPU_DX9.h b/GPU/Directx9/GPU_DX9.h index 41e057ab74..1da17b2e3e 100644 --- a/GPU/Directx9/GPU_DX9.h +++ b/GPU/Directx9/GPU_DX9.h @@ -39,10 +39,6 @@ public: void ReapplyGfxState() override; void GetStats(char *buffer, size_t bufsize) override; - // Using string because it's generic - makes no assumptions on the size of the shader IDs of this backend. - std::vector DebugGetShaderIDs(DebugShaderType shader) override; - std::string DebugGetShaderString(std::string id, DebugShaderType shader, DebugShaderStringType stringType) override; - protected: void FinishDeferred() override; diff --git a/GPU/GLES/GPU_GLES.cpp b/GPU/GLES/GPU_GLES.cpp index a8f8a9c449..756cf81937 100644 --- a/GPU/GLES/GPU_GLES.cpp +++ b/GPU/GLES/GPU_GLES.cpp @@ -311,25 +311,3 @@ void GPU_GLES::GetStats(char *buffer, size_t bufsize) { shaderManagerGL_->GetNumPrograms() ); } - -std::vector GPU_GLES::DebugGetShaderIDs(DebugShaderType type) { - switch (type) { - case SHADER_TYPE_VERTEXLOADER: - return drawEngine_.DebugGetVertexLoaderIDs(); - case SHADER_TYPE_TEXTURE: - return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type); - default: - return shaderManagerGL_->DebugGetShaderIDs(type); - } -} - -std::string GPU_GLES::DebugGetShaderString(std::string id, DebugShaderType type, DebugShaderStringType stringType) { - switch (type) { - case SHADER_TYPE_VERTEXLOADER: - return drawEngine_.DebugGetVertexLoaderString(id, stringType); - case SHADER_TYPE_TEXTURE: - return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType); - default: - return shaderManagerGL_->DebugGetShaderString(id, type, stringType); - } -} diff --git a/GPU/GLES/GPU_GLES.h b/GPU/GLES/GPU_GLES.h index 21c9adba08..a56765a580 100644 --- a/GPU/GLES/GPU_GLES.h +++ b/GPU/GLES/GPU_GLES.h @@ -48,10 +48,6 @@ public: void DeviceLost() override; // Only happens on Android. Drop all textures and shaders. void DeviceRestore() override; - // Using string because it's generic - makes no assumptions on the size of the shader IDs of this backend. - std::vector DebugGetShaderIDs(DebugShaderType shader) override; - std::string DebugGetShaderString(std::string id, DebugShaderType shader, DebugShaderStringType stringType) override; - void BeginHostFrame() override; void EndHostFrame() override; diff --git a/GPU/GPUCommonHW.cpp b/GPU/GPUCommonHW.cpp index 2943a80cc5..2f5029d5f7 100644 --- a/GPU/GPUCommonHW.cpp +++ b/GPU/GPUCommonHW.cpp @@ -546,3 +546,25 @@ void GPUCommonHW::UpdateMSAALevel(Draw::DrawContext *draw) { msaaLevel_ = 0; } } + +std::vector GPUCommonHW::DebugGetShaderIDs(DebugShaderType type) { + switch (type) { + case SHADER_TYPE_VERTEXLOADER: + return drawEngineCommon_->DebugGetVertexLoaderIDs(); + case SHADER_TYPE_TEXTURE: + return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type); + default: + return shaderManager_->DebugGetShaderIDs(type); + } +} + +std::string GPUCommonHW::DebugGetShaderString(std::string id, DebugShaderType type, DebugShaderStringType stringType) { + switch (type) { + case SHADER_TYPE_VERTEXLOADER: + return drawEngineCommon_->DebugGetVertexLoaderString(id, stringType); + case SHADER_TYPE_TEXTURE: + return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType); + default: + return shaderManager_->DebugGetShaderString(id, type, stringType); + } +} diff --git a/GPU/GPUCommonHW.h b/GPU/GPUCommonHW.h index fea544911e..f059d93fc0 100644 --- a/GPU/GPUCommonHW.h +++ b/GPU/GPUCommonHW.h @@ -15,6 +15,10 @@ public: u32 CheckGPUFeatures() const override; + // Using string because it's generic - makes no assumptions on the size of the shader IDs of this backend. + std::vector DebugGetShaderIDs(DebugShaderType shader) override; + std::string DebugGetShaderString(std::string id, DebugShaderType shader, DebugShaderStringType stringType) override; + protected: void UpdateCmdInfo() override; diff --git a/GPU/Vulkan/GPU_Vulkan.cpp b/GPU/Vulkan/GPU_Vulkan.cpp index 119414aef5..532811f365 100644 --- a/GPU/Vulkan/GPU_Vulkan.cpp +++ b/GPU/Vulkan/GPU_Vulkan.cpp @@ -499,34 +499,24 @@ void GPU_Vulkan::GetStats(char *buffer, size_t bufsize) { } std::vector GPU_Vulkan::DebugGetShaderIDs(DebugShaderType type) { - if (type == SHADER_TYPE_VERTEXLOADER) { - return drawEngine_.DebugGetVertexLoaderIDs(); - } else if (type == SHADER_TYPE_PIPELINE) { + switch (type) { + case SHADER_TYPE_PIPELINE: return pipelineManager_->DebugGetObjectIDs(type); - } else if (type == SHADER_TYPE_TEXTURE) { - return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type); - } else if (type == SHADER_TYPE_VERTEX || type == SHADER_TYPE_FRAGMENT || type == SHADER_TYPE_GEOMETRY) { - return shaderManagerVulkan_->DebugGetShaderIDs(type); - } else if (type == SHADER_TYPE_SAMPLER) { + case SHADER_TYPE_SAMPLER: return textureCacheVulkan_->DebugGetSamplerIDs(); - } else { - return std::vector(); + default: + return GPUCommonHW::DebugGetShaderIDs(type); } } std::string GPU_Vulkan::DebugGetShaderString(std::string id, DebugShaderType type, DebugShaderStringType stringType) { - if (type == SHADER_TYPE_VERTEXLOADER) { - return drawEngine_.DebugGetVertexLoaderString(id, stringType); - } else if (type == SHADER_TYPE_PIPELINE) { + switch (type) { + case SHADER_TYPE_PIPELINE: return pipelineManager_->DebugGetObjectString(id, type, stringType, shaderManagerVulkan_); - } else if (type == SHADER_TYPE_TEXTURE) { - return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType); - } else if (type == SHADER_TYPE_SAMPLER) { + case SHADER_TYPE_SAMPLER: return textureCacheVulkan_->DebugGetSamplerString(id, stringType); - } else if (type == SHADER_TYPE_VERTEX || type == SHADER_TYPE_FRAGMENT || type == SHADER_TYPE_GEOMETRY) { - return shaderManagerVulkan_->DebugGetShaderString(id, type, stringType); - } else { - return std::string(); + default: + return GPUCommonHW::DebugGetShaderString(id, type, stringType); } }