diff --git a/GPU/Common/DrawEngineCommon.h b/GPU/Common/DrawEngineCommon.h index ea8b74d8e3..7b236da599 100644 --- a/GPU/Common/DrawEngineCommon.h +++ b/GPU/Common/DrawEngineCommon.h @@ -82,6 +82,11 @@ public: virtual ~DrawEngineCommon(); void Init(); + + void SetGPUCommon(GPUCommon *gpuCommon) { + gpuCommon_ = gpuCommon; + } + virtual void DeviceLost() = 0; virtual void DeviceRestore(Draw::DrawContext *draw) = 0; @@ -330,4 +335,6 @@ protected: Vec2f minOffset_; Vec2f maxOffset_; bool offsetOutsideEdge_; + + GPUCommon *gpuCommon_; }; diff --git a/GPU/D3D11/GPU_D3D11.cpp b/GPU/D3D11/GPU_D3D11.cpp index 2e425b1f44..1c41a5a58b 100644 --- a/GPU/D3D11/GPU_D3D11.cpp +++ b/GPU/D3D11/GPU_D3D11.cpp @@ -58,6 +58,7 @@ GPU_D3D11::GPU_D3D11(GraphicsContext *gfxCtx, Draw::DrawContext *draw) textureCache_ = textureCacheD3D11_; drawEngineCommon_ = &drawEngine_; shaderManager_ = shaderManagerD3D11_; + drawEngine_.SetGPUCommon(this); drawEngine_.SetShaderManager(shaderManagerD3D11_); drawEngine_.SetTextureCache(textureCacheD3D11_); drawEngine_.SetFramebufferManager(framebufferManagerD3D11_); diff --git a/GPU/Directx9/GPU_DX9.cpp b/GPU/Directx9/GPU_DX9.cpp index cf49fa1c0a..61f94384d3 100644 --- a/GPU/Directx9/GPU_DX9.cpp +++ b/GPU/Directx9/GPU_DX9.cpp @@ -56,6 +56,7 @@ GPU_DX9::GPU_DX9(GraphicsContext *gfxCtx, Draw::DrawContext *draw) drawEngineCommon_ = &drawEngine_; shaderManager_ = shaderManagerDX9_; + drawEngine_.SetGPUCommon(this); drawEngine_.SetShaderManager(shaderManagerDX9_); drawEngine_.SetTextureCache(textureCacheDX9_); drawEngine_.SetFramebufferManager(framebufferManagerDX9_); diff --git a/GPU/GLES/GPU_GLES.cpp b/GPU/GLES/GPU_GLES.cpp index aa2cc82f76..ff2909f868 100644 --- a/GPU/GLES/GPU_GLES.cpp +++ b/GPU/GLES/GPU_GLES.cpp @@ -58,6 +58,7 @@ GPU_GLES::GPU_GLES(GraphicsContext *gfxCtx, Draw::DrawContext *draw) drawEngineCommon_ = &drawEngine_; shaderManager_ = shaderManagerGL_; + drawEngine_.SetGPUCommon(this); drawEngine_.SetShaderManager(shaderManagerGL_); drawEngine_.SetTextureCache(textureCacheGL_); drawEngine_.SetFramebufferManager(framebufferManagerGL_); diff --git a/GPU/Software/SoftGpu.cpp b/GPU/Software/SoftGpu.cpp index e58d9adc12..5a96c947f2 100644 --- a/GPU/Software/SoftGpu.cpp +++ b/GPU/Software/SoftGpu.cpp @@ -436,6 +436,7 @@ SoftGPU::SoftGPU(GraphicsContext *gfxCtx, Draw::DrawContext *draw) if (!drawEngine_) return; + drawEngine_->SetGPUCommon(this); drawEngine_->Init(); drawEngineCommon_ = drawEngine_; diff --git a/GPU/Vulkan/GPU_Vulkan.cpp b/GPU/Vulkan/GPU_Vulkan.cpp index 73acc0fe58..460e28387c 100644 --- a/GPU/Vulkan/GPU_Vulkan.cpp +++ b/GPU/Vulkan/GPU_Vulkan.cpp @@ -64,6 +64,7 @@ GPU_Vulkan::GPU_Vulkan(GraphicsContext *gfxCtx, Draw::DrawContext *draw) drawEngineCommon_ = &drawEngine_; shaderManager_ = shaderManagerVulkan_; + drawEngine_.SetGPUCommon(this); drawEngine_.SetTextureCache(textureCacheVulkan_); drawEngine_.SetFramebufferManager(framebufferManagerVulkan_); drawEngine_.SetShaderManager(shaderManagerVulkan_);