diff options
| author | Scott Mansell <phiren@gmail.com> | 2016-06-26 21:55:22 +1200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-06-26 21:55:22 +1200 |
| commit | ee9e3432cb980ff75b40b40b9f5729fa25a68fc2 (patch) | |
| tree | ae43d36c26ba467b96847c8f0ed16af2a069a0f2 /Source/Core/VideoBackends/Null | |
| parent | 2776bcbf55ccc256fd7b43008ee4349d59739cff (diff) | |
| parent | 2f134c5c36c3a9c3c7a618635d98d0bf2191b9f2 (diff) | |
Merge pull request #3513 from phire/make_hdkr_happy
Get shadergen ready for Multithreadded generation of shaders.
Diffstat (limited to 'Source/Core/VideoBackends/Null')
| -rw-r--r-- | Source/Core/VideoBackends/Null/ShaderCache.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Null/ShaderCache.h | 28 |
2 files changed, 14 insertions, 16 deletions
diff --git a/Source/Core/VideoBackends/Null/ShaderCache.cpp b/Source/Core/VideoBackends/Null/ShaderCache.cpp index e0fa000765..a08ef6952b 100644 --- a/Source/Core/VideoBackends/Null/ShaderCache.cpp +++ b/Source/Core/VideoBackends/Null/ShaderCache.cpp @@ -59,7 +59,7 @@ bool ShaderCache<Uid>::SetShader(DSTALPHA_MODE dst_alpha_mode, u32 primitive_typ } // Need to compile a new shader - ShaderCode code = GenerateCode(dst_alpha_mode, primitive_type, API_OPENGL); + ShaderCode code = GenerateCode(dst_alpha_mode, API_OPENGL, uid); m_shaders.emplace(uid, code.GetBuffer()); GFX_DEBUGGER_PAUSE_AT(NEXT_PIXEL_SHADER_CHANGE, true); diff --git a/Source/Core/VideoBackends/Null/ShaderCache.h b/Source/Core/VideoBackends/Null/ShaderCache.h index 833c8acf36..2dcdaf85b7 100644 --- a/Source/Core/VideoBackends/Null/ShaderCache.h +++ b/Source/Core/VideoBackends/Null/ShaderCache.h @@ -26,14 +26,12 @@ public: protected: virtual Uid GetUid(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, API_TYPE api_type) = 0; - virtual ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, - API_TYPE api_type) = 0; + virtual ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, API_TYPE api_type, Uid uid) = 0; private: std::map<Uid, std::string> m_shaders; const std::string* m_last_entry = nullptr; Uid m_last_uid; - UidChecker<Uid, ShaderCode> m_uid_checker; }; class VertexShaderCache : public ShaderCache<VertexShaderUid> @@ -45,12 +43,12 @@ protected: VertexShaderUid GetUid(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, API_TYPE api_type) override { - return GetVertexShaderUid(api_type); + return GetVertexShaderUid(); } - ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, - API_TYPE api_type) override + ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, API_TYPE api_type, + VertexShaderUid uid) override { - return GenerateVertexShaderCode(api_type); + return GenerateVertexShaderCode(api_type, uid.GetUidData()); } }; @@ -63,12 +61,12 @@ protected: GeometryShaderUid GetUid(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, API_TYPE api_type) override { - return GetGeometryShaderUid(primitive_type, api_type); + return GetGeometryShaderUid(primitive_type); } - ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, - API_TYPE api_type) override + ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, API_TYPE api_type, + GeometryShaderUid uid) override { - return GenerateGeometryShaderCode(primitive_type, api_type); + return GenerateGeometryShaderCode(api_type, uid.GetUidData()); } }; @@ -81,12 +79,12 @@ protected: PixelShaderUid GetUid(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, API_TYPE api_type) override { - return GetPixelShaderUid(dst_alpha_mode, api_type); + return GetPixelShaderUid(dst_alpha_mode); } - ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, u32 primitive_type, - API_TYPE api_type) override + ShaderCode GenerateCode(DSTALPHA_MODE dst_alpha_mode, API_TYPE api_type, + PixelShaderUid uid) override { - return GeneratePixelShaderCode(dst_alpha_mode, api_type); + return GeneratePixelShaderCode(dst_alpha_mode, api_type, uid.GetUidData()); } }; |
