diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index 7c5b1c4e5..e3b136091 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include "common/assert.h" @@ -86,8 +87,11 @@ static void WriteUniformFloatReg(ShaderRegs& config, Shader::ShaderSetup& setup, // NOTE: The destination component order indeed is "backwards" if (uniform_setup.IsFloat32()) { - for (auto i : {0, 1, 2, 3}) - uniform[3 - i] = float24::FromFloat32(*(float*)(&uniform_write_buffer[i])); + for (auto i : {0, 1, 2, 3}) { + float buffer_value; + std::memcpy(&buffer_value, &uniform_write_buffer[i], sizeof(float)); + uniform[3 - i] = float24::FromFloat32(buffer_value); + } } else { // TODO: Untested uniform.w = float24::FromRaw(uniform_write_buffer[0] >> 8);