diff options
| author | Stenzek <stenzek@gmail.com> | 2017-09-08 19:42:56 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2018-02-22 22:02:34 +1000 |
| commit | fec6bb4d5676de8834c90d93127c1459f46f8dcb (patch) | |
| tree | f484dbc96cc5bdc49282a63b973c98e93ec2bfad /Source/Core/VideoBackends/Software | |
| parent | 31111ef1432bc5d6d653fbef175e8ca3ac2c152d (diff) | |
VideoBackends: Add AbstractShader and AbstractPipeline classes
Diffstat (limited to 'Source/Core/VideoBackends/Software')
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWRenderer.cpp | 36 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWRenderer.h | 6 |
2 files changed, 42 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Software/SWRenderer.cpp b/Source/Core/VideoBackends/Software/SWRenderer.cpp index 28bd57557e..cde52b4449 100644 --- a/Source/Core/VideoBackends/Software/SWRenderer.cpp +++ b/Source/Core/VideoBackends/Software/SWRenderer.cpp @@ -16,6 +16,8 @@ #include "VideoBackends/Software/SWOGLWindow.h" #include "VideoBackends/Software/SWTexture.h" +#include "VideoCommon/AbstractPipeline.h" +#include "VideoCommon/AbstractShader.h" #include "VideoCommon/BoundingBox.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/VideoBackendBase.h" @@ -42,6 +44,40 @@ void SWRenderer::RenderText(const std::string& pstr, int left, int top, u32 colo SWOGLWindow::s_instance->PrintText(pstr, left, top, color); } +class SWShader final : public AbstractShader +{ +public: + explicit SWShader(ShaderStage stage) : AbstractShader(stage) {} + ~SWShader() = default; + + bool HasBinary() const override { return false; } + BinaryData GetBinary() const override { return {}; } +}; + +std::unique_ptr<AbstractShader> +SWRenderer::CreateShaderFromSource(ShaderStage stage, const char* source, size_t length) +{ + return std::make_unique<SWShader>(stage); +} + +std::unique_ptr<AbstractShader> SWRenderer::CreateShaderFromBinary(ShaderStage stage, + const void* data, size_t length) +{ + return std::make_unique<SWShader>(stage); +} + +class SWPipeline final : public AbstractPipeline +{ +public: + SWPipeline() : AbstractPipeline() {} + ~SWPipeline() override = default; +}; + +std::unique_ptr<AbstractPipeline> SWRenderer::CreatePipeline(const AbstractPipelineConfig& config) +{ + return std::make_unique<SWPipeline>(); +} + // Called on the GPU thread void SWRenderer::SwapImpl(AbstractTexture* texture, const EFBRectangle& xfb_region, u64 ticks, float Gamma) diff --git a/Source/Core/VideoBackends/Software/SWRenderer.h b/Source/Core/VideoBackends/Software/SWRenderer.h index ecab73cccc..0631cbdf00 100644 --- a/Source/Core/VideoBackends/Software/SWRenderer.h +++ b/Source/Core/VideoBackends/Software/SWRenderer.h @@ -17,6 +17,12 @@ public: std::unique_ptr<AbstractStagingTexture> CreateStagingTexture(StagingTextureType type, const TextureConfig& config) override; + std::unique_ptr<AbstractShader> CreateShaderFromSource(ShaderStage stage, const char* source, + size_t length) override; + std::unique_ptr<AbstractShader> CreateShaderFromBinary(ShaderStage stage, const void* data, + size_t length) override; + std::unique_ptr<AbstractPipeline> CreatePipeline(const AbstractPipelineConfig& config) override; + void RenderText(const std::string& pstr, int left, int top, u32 color) override; u32 AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) override; void PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points) override {} |
