diff --git a/Outputs/OpenGL/ScanTargetGLSLFragments.cpp b/Outputs/OpenGL/ScanTargetGLSLFragments.cpp index 0404f95e8..bdfd5649a 100644 --- a/Outputs/OpenGL/ScanTargetGLSLFragments.cpp +++ b/Outputs/OpenGL/ScanTargetGLSLFragments.cpp @@ -84,6 +84,11 @@ void ScanTarget::enable_vertex_attributes(ShaderType type, Shader &target) { Scan test_scan; Line test_line; + // Some GPUs require alignment and will need to copy vertex data to a + // shadow buffer otherwise + static_assert(sizeof(Scan) % 4 == 0); + static_assert(sizeof(Line) % 4 == 0); + switch(type) { case ShaderType::Composition: for(int c = 0; c < 2; ++c) { diff --git a/Outputs/ScanTarget.hpp b/Outputs/ScanTarget.hpp index dc4074d95..0a32ac346 100644 --- a/Outputs/ScanTarget.hpp +++ b/Outputs/ScanTarget.hpp @@ -304,7 +304,11 @@ struct ScanTarget { /// For composite video, dictates the amplitude of the colour subcarrier as a proportion of /// the whole, as determined from the colour burst. Will be 0 if there was no colour burst. - uint8_t composite_amplitude; + union { + uint8_t composite_amplitude; + + uint32_t padding; + }; }; /// Requests a new scan to populate.