summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/ShaderCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/ShaderCache.cpp')
-rw-r--r--Source/Core/VideoCommon/ShaderCache.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/Source/Core/VideoCommon/ShaderCache.cpp b/Source/Core/VideoCommon/ShaderCache.cpp
index 1c01356c99..150f38b307 100644
--- a/Source/Core/VideoCommon/ShaderCache.cpp
+++ b/Source/Core/VideoCommon/ShaderCache.cpp
@@ -608,14 +608,10 @@ AbstractPipelineConfig ShaderCache::GetGXPipelineConfig(
static GXPipelineUid ApplyDriverBugs(const GXPipelineUid& in)
{
GXPipelineUid out;
-#ifdef __GNUC__
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wclass-memaccess"
-#endif
- memcpy(&out, &in, sizeof(out)); // copy padding
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
+ // TODO: static_assert(std::is_trivially_copyable_v<GXPipelineUid>);
+ // GXPipelineUid is not trivially copyable because RasterizationState and BlendingState aren't
+ // either, but we can pretend it is for now. This will be improved after PR #10848 is finished.
+ memcpy(static_cast<void*>(&out), static_cast<const void*>(&in), sizeof(out)); // copy padding
pixel_shader_uid_data* ps = out.ps_uid.GetUidData();
BlendingState& blend = out.blending_state;
@@ -785,14 +781,10 @@ ShaderCache::GetGXPipelineConfig(const GXPipelineUid& config_in)
static GXUberPipelineUid ApplyDriverBugs(const GXUberPipelineUid& in)
{
GXUberPipelineUid out;
-#ifdef __GNUC__
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wclass-memaccess"
-#endif
- memcpy(&out, &in, sizeof(out)); // Copy padding
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
+ // TODO: static_assert(std::is_trivially_copyable_v<GXUberPipelineUid>);
+ // GXUberPipelineUid is not trivially copyable because RasterizationState and BlendingState aren't
+ // either, but we can pretend it is for now. This will be improved after PR #10848 is finished.
+ memcpy(static_cast<void*>(&out), static_cast<const void*>(&in), sizeof(out)); // Copy padding
if (g_ActiveConfig.backend_info.bSupportsDynamicVertexLoader)
out.vertex_format = nullptr;