summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/audio_core/sink_context.h6
-rw-r--r--src/common/common_funcs.h8
-rw-r--r--src/core/file_sys/content_archive.cpp24
-rw-r--r--src/core/hle/ipc.h4
-rw-r--r--src/core/hle/service/am/applets/error.cpp10
-rw-r--r--src/video_core/engines/fermi_2d.h30
-rw-r--r--src/video_core/engines/kepler_compute.h16
-rw-r--r--src/video_core/engines/kepler_memory.h4
-rw-r--r--src/video_core/engines/maxwell_3d.h150
-rw-r--r--src/video_core/engines/shader_header.h38
-rw-r--r--src/video_core/gpu.h8
11 files changed, 149 insertions, 149 deletions
diff --git a/src/audio_core/sink_context.h b/src/audio_core/sink_context.h
index 05541becb..66ee4e8a0 100644
--- a/src/audio_core/sink_context.h
+++ b/src/audio_core/sink_context.h
@@ -40,17 +40,17 @@ public:
40 SinkSampleFormat sample_format; 40 SinkSampleFormat sample_format;
41 std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input; 41 std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input;
42 bool in_use; 42 bool in_use;
43 INSERT_UNION_PADDING_BYTES(5); 43 INSERT_PADDING_BYTES_NOINIT(5);
44 }; 44 };
45 static_assert(sizeof(CircularBufferIn) == 0x28, 45 static_assert(sizeof(CircularBufferIn) == 0x28,
46 "SinkInfo::CircularBufferIn is in invalid size"); 46 "SinkInfo::CircularBufferIn is in invalid size");
47 47
48 struct DeviceIn { 48 struct DeviceIn {
49 std::array<u8, 255> device_name; 49 std::array<u8, 255> device_name;
50 INSERT_UNION_PADDING_BYTES(1); 50 INSERT_PADDING_BYTES_NOINIT(1);
51 s32_le input_count; 51 s32_le input_count;
52 std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input; 52 std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input;
53 INSERT_UNION_PADDING_BYTES(1); 53 INSERT_PADDING_BYTES_NOINIT(1);
54 bool down_matrix_enabled; 54 bool down_matrix_enabled;
55 DownmixCoefficients down_matrix_coef; 55 DownmixCoefficients down_matrix_coef;
56 }; 56 };
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h
index c90978f9c..75f3027fb 100644
--- a/src/common/common_funcs.h
+++ b/src/common/common_funcs.h
@@ -24,10 +24,10 @@
24#define INSERT_PADDING_WORDS(num_words) \ 24#define INSERT_PADDING_WORDS(num_words) \
25 std::array<u32, num_words> CONCAT2(pad, __LINE__) {} 25 std::array<u32, num_words> CONCAT2(pad, __LINE__) {}
26 26
27/// These are similar to the INSERT_PADDING_* macros, but are needed for padding unions. This is 27/// These are similar to the INSERT_PADDING_* macros but do not zero-initialize the contents.
28/// because unions can only be initialized by one member. 28/// This keeps the structure trivial to construct.
29#define INSERT_UNION_PADDING_BYTES(num_bytes) std::array<u8, num_bytes> CONCAT2(pad, __LINE__) 29#define INSERT_PADDING_BYTES_NOINIT(num_bytes) std::array<u8, num_bytes> CONCAT2(pad, __LINE__)
30#define INSERT_UNION_PADDING_WORDS(num_words) std::array<u32, num_words> CONCAT2(pad, __LINE__) 30#define INSERT_PADDING_WORDS_NOINIT(num_words) std::array<u32, num_words> CONCAT2(pad, __LINE__)
31 31
32#ifndef _MSC_VER 32#ifndef _MSC_VER
33 33
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp
index a6c0337fa..d12218fc2 100644
--- a/src/core/file_sys/content_archive.cpp
+++ b/src/core/file_sys/content_archive.cpp
@@ -43,17 +43,17 @@ static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size.");
43struct IVFCHeader { 43struct IVFCHeader {
44 u32_le magic; 44 u32_le magic;
45 u32_le magic_number; 45 u32_le magic_number;
46 INSERT_UNION_PADDING_BYTES(8); 46 INSERT_PADDING_BYTES_NOINIT(8);
47 std::array<IVFCLevel, 6> levels; 47 std::array<IVFCLevel, 6> levels;
48 INSERT_UNION_PADDING_BYTES(64); 48 INSERT_PADDING_BYTES_NOINIT(64);
49}; 49};
50static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size."); 50static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size.");
51 51
52struct NCASectionHeaderBlock { 52struct NCASectionHeaderBlock {
53 INSERT_UNION_PADDING_BYTES(3); 53 INSERT_PADDING_BYTES_NOINIT(3);
54 NCASectionFilesystemType filesystem_type; 54 NCASectionFilesystemType filesystem_type;
55 NCASectionCryptoType crypto_type; 55 NCASectionCryptoType crypto_type;
56 INSERT_UNION_PADDING_BYTES(3); 56 INSERT_PADDING_BYTES_NOINIT(3);
57}; 57};
58static_assert(sizeof(NCASectionHeaderBlock) == 0x8, "NCASectionHeaderBlock has incorrect size."); 58static_assert(sizeof(NCASectionHeaderBlock) == 0x8, "NCASectionHeaderBlock has incorrect size.");
59 59
@@ -61,7 +61,7 @@ struct NCASectionRaw {
61 NCASectionHeaderBlock header; 61 NCASectionHeaderBlock header;
62 std::array<u8, 0x138> block_data; 62 std::array<u8, 0x138> block_data;
63 std::array<u8, 0x8> section_ctr; 63 std::array<u8, 0x8> section_ctr;
64 INSERT_UNION_PADDING_BYTES(0xB8); 64 INSERT_PADDING_BYTES_NOINIT(0xB8);
65}; 65};
66static_assert(sizeof(NCASectionRaw) == 0x200, "NCASectionRaw has incorrect size."); 66static_assert(sizeof(NCASectionRaw) == 0x200, "NCASectionRaw has incorrect size.");
67 67
@@ -69,19 +69,19 @@ struct PFS0Superblock {
69 NCASectionHeaderBlock header_block; 69 NCASectionHeaderBlock header_block;
70 std::array<u8, 0x20> hash; 70 std::array<u8, 0x20> hash;
71 u32_le size; 71 u32_le size;
72 INSERT_UNION_PADDING_BYTES(4); 72 INSERT_PADDING_BYTES_NOINIT(4);
73 u64_le hash_table_offset; 73 u64_le hash_table_offset;
74 u64_le hash_table_size; 74 u64_le hash_table_size;
75 u64_le pfs0_header_offset; 75 u64_le pfs0_header_offset;
76 u64_le pfs0_size; 76 u64_le pfs0_size;
77 INSERT_UNION_PADDING_BYTES(0x1B0); 77 INSERT_PADDING_BYTES_NOINIT(0x1B0);
78}; 78};
79static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size."); 79static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size.");
80 80
81struct RomFSSuperblock { 81struct RomFSSuperblock {
82 NCASectionHeaderBlock header_block; 82 NCASectionHeaderBlock header_block;
83 IVFCHeader ivfc; 83 IVFCHeader ivfc;
84 INSERT_UNION_PADDING_BYTES(0x118); 84 INSERT_PADDING_BYTES_NOINIT(0x118);
85}; 85};
86static_assert(sizeof(RomFSSuperblock) == 0x200, "RomFSSuperblock has incorrect size."); 86static_assert(sizeof(RomFSSuperblock) == 0x200, "RomFSSuperblock has incorrect size.");
87 87
@@ -89,19 +89,19 @@ struct BKTRHeader {
89 u64_le offset; 89 u64_le offset;
90 u64_le size; 90 u64_le size;
91 u32_le magic; 91 u32_le magic;
92 INSERT_UNION_PADDING_BYTES(0x4); 92 INSERT_PADDING_BYTES_NOINIT(0x4);
93 u32_le number_entries; 93 u32_le number_entries;
94 INSERT_UNION_PADDING_BYTES(0x4); 94 INSERT_PADDING_BYTES_NOINIT(0x4);
95}; 95};
96static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size."); 96static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size.");
97 97
98struct BKTRSuperblock { 98struct BKTRSuperblock {
99 NCASectionHeaderBlock header_block; 99 NCASectionHeaderBlock header_block;
100 IVFCHeader ivfc; 100 IVFCHeader ivfc;
101 INSERT_UNION_PADDING_BYTES(0x18); 101 INSERT_PADDING_BYTES_NOINIT(0x18);
102 BKTRHeader relocation; 102 BKTRHeader relocation;
103 BKTRHeader subsection; 103 BKTRHeader subsection;
104 INSERT_UNION_PADDING_BYTES(0xC0); 104 INSERT_PADDING_BYTES_NOINIT(0xC0);
105}; 105};
106static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size."); 106static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size.");
107 107
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h
index 7ce313190..79bcf5762 100644
--- a/src/core/hle/ipc.h
+++ b/src/core/hle/ipc.h
@@ -160,7 +160,7 @@ struct DomainMessageHeader {
160 // Used when responding to an IPC request, Server -> Client. 160 // Used when responding to an IPC request, Server -> Client.
161 struct { 161 struct {
162 u32_le num_objects; 162 u32_le num_objects;
163 INSERT_UNION_PADDING_WORDS(3); 163 INSERT_PADDING_WORDS_NOINIT(3);
164 }; 164 };
165 165
166 // Used when performing an IPC request, Client -> Server. 166 // Used when performing an IPC request, Client -> Server.
@@ -171,7 +171,7 @@ struct DomainMessageHeader {
171 BitField<16, 16, u32> size; 171 BitField<16, 16, u32> size;
172 }; 172 };
173 u32_le object_id; 173 u32_le object_id;
174 INSERT_UNION_PADDING_WORDS(2); 174 INSERT_PADDING_WORDS_NOINIT(2);
175 }; 175 };
176 176
177 std::array<u32, 4> raw{}; 177 std::array<u32, 4> raw{};
diff --git a/src/core/hle/service/am/applets/error.cpp b/src/core/hle/service/am/applets/error.cpp
index d85505082..0c8b632e8 100644
--- a/src/core/hle/service/am/applets/error.cpp
+++ b/src/core/hle/service/am/applets/error.cpp
@@ -20,9 +20,9 @@ namespace Service::AM::Applets {
20struct ShowError { 20struct ShowError {
21 u8 mode; 21 u8 mode;
22 bool jump; 22 bool jump;
23 INSERT_UNION_PADDING_BYTES(4); 23 INSERT_PADDING_BYTES_NOINIT(4);
24 bool use_64bit_error_code; 24 bool use_64bit_error_code;
25 INSERT_UNION_PADDING_BYTES(1); 25 INSERT_PADDING_BYTES_NOINIT(1);
26 u64 error_code_64; 26 u64 error_code_64;
27 u32 error_code_32; 27 u32 error_code_32;
28}; 28};
@@ -32,7 +32,7 @@ static_assert(sizeof(ShowError) == 0x14, "ShowError has incorrect size.");
32struct ShowErrorRecord { 32struct ShowErrorRecord {
33 u8 mode; 33 u8 mode;
34 bool jump; 34 bool jump;
35 INSERT_UNION_PADDING_BYTES(6); 35 INSERT_PADDING_BYTES_NOINIT(6);
36 u64 error_code_64; 36 u64 error_code_64;
37 u64 posix_time; 37 u64 posix_time;
38}; 38};
@@ -41,7 +41,7 @@ static_assert(sizeof(ShowErrorRecord) == 0x18, "ShowErrorRecord has incorrect si
41struct SystemErrorArg { 41struct SystemErrorArg {
42 u8 mode; 42 u8 mode;
43 bool jump; 43 bool jump;
44 INSERT_UNION_PADDING_BYTES(6); 44 INSERT_PADDING_BYTES_NOINIT(6);
45 u64 error_code_64; 45 u64 error_code_64;
46 std::array<char, 8> language_code; 46 std::array<char, 8> language_code;
47 std::array<char, 0x800> main_text; 47 std::array<char, 0x800> main_text;
@@ -52,7 +52,7 @@ static_assert(sizeof(SystemErrorArg) == 0x1018, "SystemErrorArg has incorrect si
52struct ApplicationErrorArg { 52struct ApplicationErrorArg {
53 u8 mode; 53 u8 mode;
54 bool jump; 54 bool jump;
55 INSERT_UNION_PADDING_BYTES(6); 55 INSERT_PADDING_BYTES_NOINIT(6);
56 u32 error_code; 56 u32 error_code;
57 std::array<char, 8> language_code; 57 std::array<char, 8> language_code;
58 std::array<char, 0x800> main_text; 58 std::array<char, 0x800> main_text;
diff --git a/src/video_core/engines/fermi_2d.h b/src/video_core/engines/fermi_2d.h
index 81522988e..0de3280a2 100644
--- a/src/video_core/engines/fermi_2d.h
+++ b/src/video_core/engines/fermi_2d.h
@@ -171,30 +171,30 @@ public:
171 static constexpr std::size_t NUM_REGS = 0x258; 171 static constexpr std::size_t NUM_REGS = 0x258;
172 struct { 172 struct {
173 u32 object; 173 u32 object;
174 INSERT_UNION_PADDING_WORDS(0x3F); 174 INSERT_PADDING_WORDS_NOINIT(0x3F);
175 u32 no_operation; 175 u32 no_operation;
176 NotifyType notify; 176 NotifyType notify;
177 INSERT_UNION_PADDING_WORDS(0x2); 177 INSERT_PADDING_WORDS_NOINIT(0x2);
178 u32 wait_for_idle; 178 u32 wait_for_idle;
179 INSERT_UNION_PADDING_WORDS(0xB); 179 INSERT_PADDING_WORDS_NOINIT(0xB);
180 u32 pm_trigger; 180 u32 pm_trigger;
181 INSERT_UNION_PADDING_WORDS(0xF); 181 INSERT_PADDING_WORDS_NOINIT(0xF);
182 u32 context_dma_notify; 182 u32 context_dma_notify;
183 u32 dst_context_dma; 183 u32 dst_context_dma;
184 u32 src_context_dma; 184 u32 src_context_dma;
185 u32 semaphore_context_dma; 185 u32 semaphore_context_dma;
186 INSERT_UNION_PADDING_WORDS(0x1C); 186 INSERT_PADDING_WORDS_NOINIT(0x1C);
187 Surface dst; 187 Surface dst;
188 CpuIndexWrap pixels_from_cpu_index_wrap; 188 CpuIndexWrap pixels_from_cpu_index_wrap;
189 u32 kind2d_check_enable; 189 u32 kind2d_check_enable;
190 Surface src; 190 Surface src;
191 SectorPromotion pixels_from_memory_sector_promotion; 191 SectorPromotion pixels_from_memory_sector_promotion;
192 INSERT_UNION_PADDING_WORDS(0x1); 192 INSERT_PADDING_WORDS_NOINIT(0x1);
193 NumTpcs num_tpcs; 193 NumTpcs num_tpcs;
194 u32 render_enable_addr_upper; 194 u32 render_enable_addr_upper;
195 u32 render_enable_addr_lower; 195 u32 render_enable_addr_lower;
196 RenderEnableMode render_enable_mode; 196 RenderEnableMode render_enable_mode;
197 INSERT_UNION_PADDING_WORDS(0x4); 197 INSERT_PADDING_WORDS_NOINIT(0x4);
198 u32 clip_x0; 198 u32 clip_x0;
199 u32 clip_y0; 199 u32 clip_y0;
200 u32 clip_width; 200 u32 clip_width;
@@ -212,7 +212,7 @@ public:
212 BitField<8, 6, u32> y; 212 BitField<8, 6, u32> y;
213 } pattern_offset; 213 } pattern_offset;
214 BitField<0, 2, PatternSelect> pattern_select; 214 BitField<0, 2, PatternSelect> pattern_select;
215 INSERT_UNION_PADDING_WORDS(0xC); 215 INSERT_PADDING_WORDS_NOINIT(0xC);
216 struct { 216 struct {
217 BitField<0, 3, MonochromePatternColorFormat> color_format; 217 BitField<0, 3, MonochromePatternColorFormat> color_format;
218 BitField<0, 1, MonochromePatternFormat> format; 218 BitField<0, 1, MonochromePatternFormat> format;
@@ -227,15 +227,15 @@ public:
227 std::array<u32, 0x20> X1R5G5B5; 227 std::array<u32, 0x20> X1R5G5B5;
228 std::array<u32, 0x10> Y8; 228 std::array<u32, 0x10> Y8;
229 } color_pattern; 229 } color_pattern;
230 INSERT_UNION_PADDING_WORDS(0x10); 230 INSERT_PADDING_WORDS_NOINIT(0x10);
231 struct { 231 struct {
232 u32 prim_mode; 232 u32 prim_mode;
233 u32 prim_color_format; 233 u32 prim_color_format;
234 u32 prim_color; 234 u32 prim_color;
235 u32 line_tie_break_bits; 235 u32 line_tie_break_bits;
236 INSERT_UNION_PADDING_WORDS(0x14); 236 INSERT_PADDING_WORDS_NOINIT(0x14);
237 u32 prim_point_xy; 237 u32 prim_point_xy;
238 INSERT_UNION_PADDING_WORDS(0x7); 238 INSERT_PADDING_WORDS_NOINIT(0x7);
239 std::array<Point, 0x40> prim_point; 239 std::array<Point, 0x40> prim_point;
240 } render_solid; 240 } render_solid;
241 struct { 241 struct {
@@ -247,7 +247,7 @@ public:
247 u32 color0; 247 u32 color0;
248 u32 color1; 248 u32 color1;
249 u32 mono_opacity; 249 u32 mono_opacity;
250 INSERT_UNION_PADDING_WORDS(0x6); 250 INSERT_PADDING_WORDS_NOINIT(0x6);
251 u32 src_width; 251 u32 src_width;
252 u32 src_height; 252 u32 src_height;
253 u32 dx_du_frac; 253 u32 dx_du_frac;
@@ -260,9 +260,9 @@ public:
260 u32 dst_y0_int; 260 u32 dst_y0_int;
261 u32 data; 261 u32 data;
262 } pixels_from_cpu; 262 } pixels_from_cpu;
263 INSERT_UNION_PADDING_WORDS(0x3); 263 INSERT_PADDING_WORDS_NOINIT(0x3);
264 u32 big_endian_control; 264 u32 big_endian_control;
265 INSERT_UNION_PADDING_WORDS(0x3); 265 INSERT_PADDING_WORDS_NOINIT(0x3);
266 struct { 266 struct {
267 BitField<0, 3, u32> block_shape; 267 BitField<0, 3, u32> block_shape;
268 BitField<0, 5, u32> corral_size; 268 BitField<0, 5, u32> corral_size;
@@ -271,7 +271,7 @@ public:
271 BitField<0, 1, Origin> origin; 271 BitField<0, 1, Origin> origin;
272 BitField<4, 1, Filter> filter; 272 BitField<4, 1, Filter> filter;
273 } sample_mode; 273 } sample_mode;
274 INSERT_UNION_PADDING_WORDS(0x8); 274 INSERT_PADDING_WORDS_NOINIT(0x8);
275 s32 dst_x0; 275 s32 dst_x0;
276 s32 dst_y0; 276 s32 dst_y0;
277 s32 dst_width; 277 s32 dst_width;
diff --git a/src/video_core/engines/kepler_compute.h b/src/video_core/engines/kepler_compute.h
index 51a041202..9f0a7b76d 100644
--- a/src/video_core/engines/kepler_compute.h
+++ b/src/video_core/engines/kepler_compute.h
@@ -55,7 +55,7 @@ public:
55 55
56 union { 56 union {
57 struct { 57 struct {
58 INSERT_UNION_PADDING_WORDS(0x60); 58 INSERT_PADDING_WORDS_NOINIT(0x60);
59 59
60 Upload::Registers upload; 60 Upload::Registers upload;
61 61
@@ -67,7 +67,7 @@ public:
67 67
68 u32 data_upload; 68 u32 data_upload;
69 69
70 INSERT_UNION_PADDING_WORDS(0x3F); 70 INSERT_PADDING_WORDS_NOINIT(0x3F);
71 71
72 struct { 72 struct {
73 u32 address; 73 u32 address;
@@ -76,11 +76,11 @@ public:
76 } 76 }
77 } launch_desc_loc; 77 } launch_desc_loc;
78 78
79 INSERT_UNION_PADDING_WORDS(0x1); 79 INSERT_PADDING_WORDS_NOINIT(0x1);
80 80
81 u32 launch; 81 u32 launch;
82 82
83 INSERT_UNION_PADDING_WORDS(0x4A7); 83 INSERT_PADDING_WORDS_NOINIT(0x4A7);
84 84
85 struct { 85 struct {
86 u32 address_high; 86 u32 address_high;
@@ -92,7 +92,7 @@ public:
92 } 92 }
93 } tsc; 93 } tsc;
94 94
95 INSERT_UNION_PADDING_WORDS(0x3); 95 INSERT_PADDING_WORDS_NOINIT(0x3);
96 96
97 struct { 97 struct {
98 u32 address_high; 98 u32 address_high;
@@ -104,7 +104,7 @@ public:
104 } 104 }
105 } tic; 105 } tic;
106 106
107 INSERT_UNION_PADDING_WORDS(0x22); 107 INSERT_PADDING_WORDS_NOINIT(0x22);
108 108
109 struct { 109 struct {
110 u32 address_high; 110 u32 address_high;
@@ -115,11 +115,11 @@ public:
115 } 115 }
116 } code_loc; 116 } code_loc;
117 117
118 INSERT_UNION_PADDING_WORDS(0x3FE); 118 INSERT_PADDING_WORDS_NOINIT(0x3FE);
119 119
120 u32 tex_cb_index; 120 u32 tex_cb_index;
121 121
122 INSERT_UNION_PADDING_WORDS(0x374); 122 INSERT_PADDING_WORDS_NOINIT(0x374);
123 }; 123 };
124 std::array<u32, NUM_REGS> reg_array; 124 std::array<u32, NUM_REGS> reg_array;
125 }; 125 };
diff --git a/src/video_core/engines/kepler_memory.h b/src/video_core/engines/kepler_memory.h
index 62483589e..19808a5c6 100644
--- a/src/video_core/engines/kepler_memory.h
+++ b/src/video_core/engines/kepler_memory.h
@@ -50,7 +50,7 @@ public:
50 50
51 union { 51 union {
52 struct { 52 struct {
53 INSERT_UNION_PADDING_WORDS(0x60); 53 INSERT_PADDING_WORDS_NOINIT(0x60);
54 54
55 Upload::Registers upload; 55 Upload::Registers upload;
56 56
@@ -62,7 +62,7 @@ public:
62 62
63 u32 data; 63 u32 data;
64 64
65 INSERT_UNION_PADDING_WORDS(0x11); 65 INSERT_PADDING_WORDS_NOINIT(0x11);
66 }; 66 };
67 std::array<u32, NUM_REGS> reg_array; 67 std::array<u32, NUM_REGS> reg_array;
68 }; 68 };
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index bf9e07c9b..326b32228 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -536,7 +536,7 @@ public:
536 Equation equation_a; 536 Equation equation_a;
537 Factor factor_source_a; 537 Factor factor_source_a;
538 Factor factor_dest_a; 538 Factor factor_dest_a;
539 INSERT_UNION_PADDING_WORDS(1); 539 INSERT_PADDING_WORDS_NOINIT(1);
540 }; 540 };
541 541
542 enum class TessellationPrimitive : u32 { 542 enum class TessellationPrimitive : u32 {
@@ -608,7 +608,7 @@ public:
608 }; 608 };
609 u32 layer_stride; 609 u32 layer_stride;
610 u32 base_layer; 610 u32 base_layer;
611 INSERT_UNION_PADDING_WORDS(7); 611 INSERT_PADDING_WORDS_NOINIT(7);
612 612
613 GPUVAddr Address() const { 613 GPUVAddr Address() const {
614 return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) | 614 return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) |
@@ -640,7 +640,7 @@ public:
640 BitField<8, 3, ViewportSwizzle> z; 640 BitField<8, 3, ViewportSwizzle> z;
641 BitField<12, 3, ViewportSwizzle> w; 641 BitField<12, 3, ViewportSwizzle> w;
642 } swizzle; 642 } swizzle;
643 INSERT_UNION_PADDING_WORDS(1); 643 INSERT_PADDING_WORDS_NOINIT(1);
644 644
645 Common::Rectangle<f32> GetRect() const { 645 Common::Rectangle<f32> GetRect() const {
646 return { 646 return {
@@ -700,7 +700,7 @@ public:
700 u32 address_low; 700 u32 address_low;
701 s32 buffer_size; 701 s32 buffer_size;
702 s32 buffer_offset; 702 s32 buffer_offset;
703 INSERT_UNION_PADDING_WORDS(3); 703 INSERT_PADDING_WORDS_NOINIT(3);
704 704
705 GPUVAddr Address() const { 705 GPUVAddr Address() const {
706 return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) | 706 return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) |
@@ -713,7 +713,7 @@ public:
713 u32 stream; 713 u32 stream;
714 u32 varying_count; 714 u32 varying_count;
715 u32 stride; 715 u32 stride;
716 INSERT_UNION_PADDING_WORDS(1); 716 INSERT_PADDING_WORDS_NOINIT(1);
717 }; 717 };
718 static_assert(sizeof(TransformFeedbackLayout) == 16); 718 static_assert(sizeof(TransformFeedbackLayout) == 16);
719 719
@@ -731,7 +731,7 @@ public:
731 731
732 union { 732 union {
733 struct { 733 struct {
734 INSERT_UNION_PADDING_WORDS(0x44); 734 INSERT_PADDING_WORDS_NOINIT(0x44);
735 735
736 u32 wait_for_idle; 736 u32 wait_for_idle;
737 737
@@ -744,7 +744,7 @@ public:
744 744
745 ShadowRamControl shadow_ram_control; 745 ShadowRamControl shadow_ram_control;
746 746
747 INSERT_UNION_PADDING_WORDS(0x16); 747 INSERT_PADDING_WORDS_NOINIT(0x16);
748 748
749 Upload::Registers upload; 749 Upload::Registers upload;
750 struct { 750 struct {
@@ -755,11 +755,11 @@ public:
755 755
756 u32 data_upload; 756 u32 data_upload;
757 757
758 INSERT_UNION_PADDING_WORDS(0x16); 758 INSERT_PADDING_WORDS_NOINIT(0x16);
759 759
760 u32 force_early_fragment_tests; 760 u32 force_early_fragment_tests;
761 761
762 INSERT_UNION_PADDING_WORDS(0x2D); 762 INSERT_PADDING_WORDS_NOINIT(0x2D);
763 763
764 struct { 764 struct {
765 union { 765 union {
@@ -769,7 +769,7 @@ public:
769 }; 769 };
770 } sync_info; 770 } sync_info;
771 771
772 INSERT_UNION_PADDING_WORDS(0x15); 772 INSERT_PADDING_WORDS_NOINIT(0x15);
773 773
774 union { 774 union {
775 BitField<0, 2, TessellationPrimitive> prim; 775 BitField<0, 2, TessellationPrimitive> prim;
@@ -781,21 +781,21 @@ public:
781 std::array<f32, 4> tess_level_outer; 781 std::array<f32, 4> tess_level_outer;
782 std::array<f32, 2> tess_level_inner; 782 std::array<f32, 2> tess_level_inner;
783 783
784 INSERT_UNION_PADDING_WORDS(0x10); 784 INSERT_PADDING_WORDS_NOINIT(0x10);
785 785
786 u32 rasterize_enable; 786 u32 rasterize_enable;
787 787
788 std::array<TransformFeedbackBinding, NumTransformFeedbackBuffers> tfb_bindings; 788 std::array<TransformFeedbackBinding, NumTransformFeedbackBuffers> tfb_bindings;
789 789
790 INSERT_UNION_PADDING_WORDS(0xC0); 790 INSERT_PADDING_WORDS_NOINIT(0xC0);
791 791
792 std::array<TransformFeedbackLayout, NumTransformFeedbackBuffers> tfb_layouts; 792 std::array<TransformFeedbackLayout, NumTransformFeedbackBuffers> tfb_layouts;
793 793
794 INSERT_UNION_PADDING_WORDS(0x1); 794 INSERT_PADDING_WORDS_NOINIT(0x1);
795 795
796 u32 tfb_enabled; 796 u32 tfb_enabled;
797 797
798 INSERT_UNION_PADDING_WORDS(0x2E); 798 INSERT_PADDING_WORDS_NOINIT(0x2E);
799 799
800 std::array<RenderTargetConfig, NumRenderTargets> rt; 800 std::array<RenderTargetConfig, NumRenderTargets> rt;
801 801
@@ -803,7 +803,7 @@ public:
803 803
804 std::array<ViewPort, NumViewports> viewports; 804 std::array<ViewPort, NumViewports> viewports;
805 805
806 INSERT_UNION_PADDING_WORDS(0x1D); 806 INSERT_PADDING_WORDS_NOINIT(0x1D);
807 807
808 struct { 808 struct {
809 u32 first; 809 u32 first;
@@ -815,16 +815,16 @@ public:
815 float clear_color[4]; 815 float clear_color[4];
816 float clear_depth; 816 float clear_depth;
817 817
818 INSERT_UNION_PADDING_WORDS(0x3); 818 INSERT_PADDING_WORDS_NOINIT(0x3);
819 819
820 s32 clear_stencil; 820 s32 clear_stencil;
821 821
822 INSERT_UNION_PADDING_WORDS(0x2); 822 INSERT_PADDING_WORDS_NOINIT(0x2);
823 823
824 PolygonMode polygon_mode_front; 824 PolygonMode polygon_mode_front;
825 PolygonMode polygon_mode_back; 825 PolygonMode polygon_mode_back;
826 826
827 INSERT_UNION_PADDING_WORDS(0x3); 827 INSERT_PADDING_WORDS_NOINIT(0x3);
828 828
829 u32 polygon_offset_point_enable; 829 u32 polygon_offset_point_enable;
830 u32 polygon_offset_line_enable; 830 u32 polygon_offset_line_enable;
@@ -832,47 +832,47 @@ public:
832 832
833 u32 patch_vertices; 833 u32 patch_vertices;
834 834
835 INSERT_UNION_PADDING_WORDS(0x4); 835 INSERT_PADDING_WORDS_NOINIT(0x4);
836 836
837 u32 fragment_barrier; 837 u32 fragment_barrier;
838 838
839 INSERT_UNION_PADDING_WORDS(0x7); 839 INSERT_PADDING_WORDS_NOINIT(0x7);
840 840
841 std::array<ScissorTest, NumViewports> scissor_test; 841 std::array<ScissorTest, NumViewports> scissor_test;
842 842
843 INSERT_UNION_PADDING_WORDS(0x15); 843 INSERT_PADDING_WORDS_NOINIT(0x15);
844 844
845 s32 stencil_back_func_ref; 845 s32 stencil_back_func_ref;
846 u32 stencil_back_mask; 846 u32 stencil_back_mask;
847 u32 stencil_back_func_mask; 847 u32 stencil_back_func_mask;
848 848
849 INSERT_UNION_PADDING_WORDS(0x5); 849 INSERT_PADDING_WORDS_NOINIT(0x5);
850 850
851 u32 invalidate_texture_data_cache; 851 u32 invalidate_texture_data_cache;
852 852
853 INSERT_UNION_PADDING_WORDS(0x1); 853 INSERT_PADDING_WORDS_NOINIT(0x1);
854 854
855 u32 tiled_cache_barrier; 855 u32 tiled_cache_barrier;
856 856
857 INSERT_UNION_PADDING_WORDS(0x4); 857 INSERT_PADDING_WORDS_NOINIT(0x4);
858 858
859 u32 color_mask_common; 859 u32 color_mask_common;
860 860
861 INSERT_UNION_PADDING_WORDS(0x2); 861 INSERT_PADDING_WORDS_NOINIT(0x2);
862 862
863 f32 depth_bounds[2]; 863 f32 depth_bounds[2];
864 864
865 INSERT_UNION_PADDING_WORDS(0x2); 865 INSERT_PADDING_WORDS_NOINIT(0x2);
866 866
867 u32 rt_separate_frag_data; 867 u32 rt_separate_frag_data;
868 868
869 INSERT_UNION_PADDING_WORDS(0x1); 869 INSERT_PADDING_WORDS_NOINIT(0x1);
870 870
871 u32 multisample_raster_enable; 871 u32 multisample_raster_enable;
872 u32 multisample_raster_samples; 872 u32 multisample_raster_samples;
873 std::array<u32, 4> multisample_sample_mask; 873 std::array<u32, 4> multisample_sample_mask;
874 874
875 INSERT_UNION_PADDING_WORDS(0x5); 875 INSERT_PADDING_WORDS_NOINIT(0x5);
876 876
877 struct { 877 struct {
878 u32 address_high; 878 u32 address_high;
@@ -898,7 +898,7 @@ public:
898 }; 898 };
899 } render_area; 899 } render_area;
900 900
901 INSERT_UNION_PADDING_WORDS(0x3F); 901 INSERT_PADDING_WORDS_NOINIT(0x3F);
902 902
903 union { 903 union {
904 BitField<0, 4, u32> stencil; 904 BitField<0, 4, u32> stencil;
@@ -907,24 +907,24 @@ public:
907 BitField<12, 4, u32> viewport; 907 BitField<12, 4, u32> viewport;
908 } clear_flags; 908 } clear_flags;
909 909
910 INSERT_UNION_PADDING_WORDS(0x10); 910 INSERT_PADDING_WORDS_NOINIT(0x10);
911 911
912 u32 fill_rectangle; 912 u32 fill_rectangle;
913 913
914 INSERT_UNION_PADDING_WORDS(0x8); 914 INSERT_PADDING_WORDS_NOINIT(0x8);
915 915
916 std::array<VertexAttribute, NumVertexAttributes> vertex_attrib_format; 916 std::array<VertexAttribute, NumVertexAttributes> vertex_attrib_format;
917 917
918 std::array<MsaaSampleLocation, 4> multisample_sample_locations; 918 std::array<MsaaSampleLocation, 4> multisample_sample_locations;
919 919
920 INSERT_UNION_PADDING_WORDS(0x2); 920 INSERT_PADDING_WORDS_NOINIT(0x2);
921 921
922 union { 922 union {
923 BitField<0, 1, u32> enable; 923 BitField<0, 1, u32> enable;
924 BitField<4, 3, u32> target; 924 BitField<4, 3, u32> target;
925 } multisample_coverage_to_color; 925 } multisample_coverage_to_color;
926 926
927 INSERT_UNION_PADDING_WORDS(0x8); 927 INSERT_PADDING_WORDS_NOINIT(0x8);
928 928
929 struct { 929 struct {
930 union { 930 union {
@@ -947,7 +947,7 @@ public:
947 } 947 }
948 } rt_control; 948 } rt_control;
949 949
950 INSERT_UNION_PADDING_WORDS(0x2); 950 INSERT_PADDING_WORDS_NOINIT(0x2);
951 951
952 u32 zeta_width; 952 u32 zeta_width;
953 u32 zeta_height; 953 u32 zeta_height;
@@ -958,11 +958,11 @@ public:
958 958
959 SamplerIndex sampler_index; 959 SamplerIndex sampler_index;
960 960
961 INSERT_UNION_PADDING_WORDS(0x25); 961 INSERT_PADDING_WORDS_NOINIT(0x25);
962 962
963 u32 depth_test_enable; 963 u32 depth_test_enable;
964 964
965 INSERT_UNION_PADDING_WORDS(0x5); 965 INSERT_PADDING_WORDS_NOINIT(0x5);
966 966
967 u32 independent_blend_enable; 967 u32 independent_blend_enable;
968 968
@@ -970,7 +970,7 @@ public:
970 970
971 u32 alpha_test_enabled; 971 u32 alpha_test_enabled;
972 972
973 INSERT_UNION_PADDING_WORDS(0x6); 973 INSERT_PADDING_WORDS_NOINIT(0x6);
974 974
975 u32 d3d_cull_mode; 975 u32 d3d_cull_mode;
976 976
@@ -985,7 +985,7 @@ public:
985 float a; 985 float a;
986 } blend_color; 986 } blend_color;
987 987
988 INSERT_UNION_PADDING_WORDS(0x4); 988 INSERT_PADDING_WORDS_NOINIT(0x4);
989 989
990 struct { 990 struct {
991 u32 separate_alpha; 991 u32 separate_alpha;
@@ -994,7 +994,7 @@ public:
994 Blend::Factor factor_dest_rgb; 994 Blend::Factor factor_dest_rgb;
995 Blend::Equation equation_a; 995 Blend::Equation equation_a;
996 Blend::Factor factor_source_a; 996 Blend::Factor factor_source_a;
997 INSERT_UNION_PADDING_WORDS(1); 997 INSERT_PADDING_WORDS_NOINIT(1);
998 Blend::Factor factor_dest_a; 998 Blend::Factor factor_dest_a;
999 999
1000 u32 enable_common; 1000 u32 enable_common;
@@ -1010,7 +1010,7 @@ public:
1010 u32 stencil_front_func_mask; 1010 u32 stencil_front_func_mask;
1011 u32 stencil_front_mask; 1011 u32 stencil_front_mask;
1012 1012
1013 INSERT_UNION_PADDING_WORDS(0x2); 1013 INSERT_PADDING_WORDS_NOINIT(0x2);
1014 1014
1015 u32 frag_color_clamp; 1015 u32 frag_color_clamp;
1016 1016
@@ -1022,17 +1022,17 @@ public:
1022 float line_width_smooth; 1022 float line_width_smooth;
1023 float line_width_aliased; 1023 float line_width_aliased;
1024 1024
1025 INSERT_UNION_PADDING_WORDS(0x1B); 1025 INSERT_PADDING_WORDS_NOINIT(0x1B);
1026 1026
1027 u32 invalidate_sampler_cache_no_wfi; 1027 u32 invalidate_sampler_cache_no_wfi;
1028 u32 invalidate_texture_header_cache_no_wfi; 1028 u32 invalidate_texture_header_cache_no_wfi;
1029 1029
1030 INSERT_UNION_PADDING_WORDS(0x2); 1030 INSERT_PADDING_WORDS_NOINIT(0x2);
1031 1031
1032 u32 vb_element_base; 1032 u32 vb_element_base;
1033 u32 vb_base_instance; 1033 u32 vb_base_instance;
1034 1034
1035 INSERT_UNION_PADDING_WORDS(0x35); 1035 INSERT_PADDING_WORDS_NOINIT(0x35);
1036 1036
1037 u32 clip_distance_enabled; 1037 u32 clip_distance_enabled;
1038 1038
@@ -1040,11 +1040,11 @@ public:
1040 1040
1041 float point_size; 1041 float point_size;
1042 1042
1043 INSERT_UNION_PADDING_WORDS(0x1); 1043 INSERT_PADDING_WORDS_NOINIT(0x1);
1044 1044
1045 u32 point_sprite_enable; 1045 u32 point_sprite_enable;
1046 1046
1047 INSERT_UNION_PADDING_WORDS(0x3); 1047 INSERT_PADDING_WORDS_NOINIT(0x3);
1048 1048
1049 CounterReset counter_reset; 1049 CounterReset counter_reset;
1050 1050
@@ -1057,7 +1057,7 @@ public:
1057 BitField<4, 1, u32> alpha_to_one; 1057 BitField<4, 1, u32> alpha_to_one;
1058 } multisample_control; 1058 } multisample_control;
1059 1059
1060 INSERT_UNION_PADDING_WORDS(0x4); 1060 INSERT_PADDING_WORDS_NOINIT(0x4);
1061 1061
1062 struct { 1062 struct {
1063 u32 address_high; 1063 u32 address_high;
@@ -1081,7 +1081,7 @@ public:
1081 } 1081 }
1082 } tsc; 1082 } tsc;
1083 1083
1084 INSERT_UNION_PADDING_WORDS(0x1); 1084 INSERT_PADDING_WORDS_NOINIT(0x1);
1085 1085
1086 float polygon_offset_factor; 1086 float polygon_offset_factor;
1087 1087
@@ -1098,7 +1098,7 @@ public:
1098 } 1098 }
1099 } tic; 1099 } tic;
1100 1100
1101 INSERT_UNION_PADDING_WORDS(0x5); 1101 INSERT_PADDING_WORDS_NOINIT(0x5);
1102 1102
1103 u32 stencil_two_side_enable; 1103 u32 stencil_two_side_enable;
1104 StencilOp stencil_back_op_fail; 1104 StencilOp stencil_back_op_fail;
@@ -1106,17 +1106,17 @@ public:
1106 StencilOp stencil_back_op_zpass; 1106 StencilOp stencil_back_op_zpass;
1107 ComparisonOp stencil_back_func_func; 1107 ComparisonOp stencil_back_func_func;
1108 1108
1109 INSERT_UNION_PADDING_WORDS(0x4); 1109 INSERT_PADDING_WORDS_NOINIT(0x4);
1110 1110
1111 u32 framebuffer_srgb; 1111 u32 framebuffer_srgb;
1112 1112
1113 float polygon_offset_units; 1113 float polygon_offset_units;
1114 1114
1115 INSERT_UNION_PADDING_WORDS(0x4); 1115 INSERT_PADDING_WORDS_NOINIT(0x4);
1116 1116
1117 Tegra::Texture::MsaaMode multisample_mode; 1117 Tegra::Texture::MsaaMode multisample_mode;
1118 1118
1119 INSERT_UNION_PADDING_WORDS(0xC); 1119 INSERT_PADDING_WORDS_NOINIT(0xC);
1120 1120
1121 union { 1121 union {
1122 BitField<2, 1, u32> coord_origin; 1122 BitField<2, 1, u32> coord_origin;
@@ -1132,7 +1132,7 @@ public:
1132 (static_cast<GPUVAddr>(code_address_high) << 32) | code_address_low); 1132 (static_cast<GPUVAddr>(code_address_high) << 32) | code_address_low);
1133 } 1133 }
1134 } code_address; 1134 } code_address;
1135 INSERT_UNION_PADDING_WORDS(1); 1135 INSERT_PADDING_WORDS_NOINIT(1);
1136 1136
1137 struct { 1137 struct {
1138 u32 vertex_end_gl; 1138 u32 vertex_end_gl;
@@ -1144,14 +1144,14 @@ public:
1144 }; 1144 };
1145 } draw; 1145 } draw;
1146 1146
1147 INSERT_UNION_PADDING_WORDS(0xA); 1147 INSERT_PADDING_WORDS_NOINIT(0xA);
1148 1148
1149 struct { 1149 struct {
1150 u32 enabled; 1150 u32 enabled;
1151 u32 index; 1151 u32 index;
1152 } primitive_restart; 1152 } primitive_restart;
1153 1153
1154 INSERT_UNION_PADDING_WORDS(0x5F); 1154 INSERT_PADDING_WORDS_NOINIT(0x5F);
1155 1155
1156 struct { 1156 struct {
1157 u32 start_addr_high; 1157 u32 start_addr_high;
@@ -1192,9 +1192,9 @@ public:
1192 } 1192 }
1193 } index_array; 1193 } index_array;
1194 1194
1195 INSERT_UNION_PADDING_WORDS(0x7); 1195 INSERT_PADDING_WORDS_NOINIT(0x7);
1196 1196
1197 INSERT_UNION_PADDING_WORDS(0x1F); 1197 INSERT_PADDING_WORDS_NOINIT(0x1F);
1198 1198
1199 float polygon_offset_clamp; 1199 float polygon_offset_clamp;
1200 1200
@@ -1208,14 +1208,14 @@ public:
1208 } 1208 }
1209 } instanced_arrays; 1209 } instanced_arrays;
1210 1210
1211 INSERT_UNION_PADDING_WORDS(0x4); 1211 INSERT_PADDING_WORDS_NOINIT(0x4);
1212 1212
1213 union { 1213 union {
1214 BitField<0, 1, u32> enable; 1214 BitField<0, 1, u32> enable;
1215 BitField<4, 8, u32> unk4; 1215 BitField<4, 8, u32> unk4;
1216 } vp_point_size; 1216 } vp_point_size;
1217 1217
1218 INSERT_UNION_PADDING_WORDS(1); 1218 INSERT_PADDING_WORDS_NOINIT(1);
1219 1219
1220 u32 cull_test_enabled; 1220 u32 cull_test_enabled;
1221 FrontFace front_face; 1221 FrontFace front_face;
@@ -1223,11 +1223,11 @@ public:
1223 1223
1224 u32 pixel_center_integer; 1224 u32 pixel_center_integer;
1225 1225
1226 INSERT_UNION_PADDING_WORDS(0x1); 1226 INSERT_PADDING_WORDS_NOINIT(0x1);
1227 1227
1228 u32 viewport_transform_enabled; 1228 u32 viewport_transform_enabled;
1229 1229
1230 INSERT_UNION_PADDING_WORDS(0x3); 1230 INSERT_PADDING_WORDS_NOINIT(0x3);
1231 1231
1232 union { 1232 union {
1233 BitField<0, 1, u32> depth_range_0_1; 1233 BitField<0, 1, u32> depth_range_0_1;
@@ -1236,18 +1236,18 @@ public:
1236 BitField<11, 1, u32> depth_clamp_disabled; 1236 BitField<11, 1, u32> depth_clamp_disabled;
1237 } view_volume_clip_control; 1237 } view_volume_clip_control;
1238 1238
1239 INSERT_UNION_PADDING_WORDS(0x1F); 1239 INSERT_PADDING_WORDS_NOINIT(0x1F);
1240 1240
1241 u32 depth_bounds_enable; 1241 u32 depth_bounds_enable;
1242 1242
1243 INSERT_UNION_PADDING_WORDS(1); 1243 INSERT_PADDING_WORDS_NOINIT(1);
1244 1244
1245 struct { 1245 struct {
1246 u32 enable; 1246 u32 enable;
1247 LogicOperation operation; 1247 LogicOperation operation;
1248 } logic_op; 1248 } logic_op;
1249 1249
1250 INSERT_UNION_PADDING_WORDS(0x1); 1250 INSERT_PADDING_WORDS_NOINIT(0x1);
1251 1251
1252 union { 1252 union {
1253 u32 raw; 1253 u32 raw;
@@ -1260,9 +1260,9 @@ public:
1260 BitField<6, 4, u32> RT; 1260 BitField<6, 4, u32> RT;
1261 BitField<10, 11, u32> layer; 1261 BitField<10, 11, u32> layer;
1262 } clear_buffers; 1262 } clear_buffers;
1263 INSERT_UNION_PADDING_WORDS(0xB); 1263 INSERT_PADDING_WORDS_NOINIT(0xB);
1264 std::array<ColorMask, NumRenderTargets> color_mask; 1264 std::array<ColorMask, NumRenderTargets> color_mask;
1265 INSERT_UNION_PADDING_WORDS(0x38); 1265 INSERT_PADDING_WORDS_NOINIT(0x38);
1266 1266
1267 struct { 1267 struct {
1268 u32 query_address_high; 1268 u32 query_address_high;
@@ -1284,7 +1284,7 @@ public:
1284 } 1284 }
1285 } query; 1285 } query;
1286 1286
1287 INSERT_UNION_PADDING_WORDS(0x3C); 1287 INSERT_PADDING_WORDS_NOINIT(0x3C);
1288 1288
1289 struct { 1289 struct {
1290 union { 1290 union {
@@ -1325,10 +1325,10 @@ public:
1325 BitField<4, 4, ShaderProgram> program; 1325 BitField<4, 4, ShaderProgram> program;
1326 }; 1326 };
1327 u32 offset; 1327 u32 offset;
1328 INSERT_UNION_PADDING_WORDS(14); 1328 INSERT_PADDING_WORDS_NOINIT(14);
1329 } shader_config[MaxShaderProgram]; 1329 } shader_config[MaxShaderProgram];
1330 1330
1331 INSERT_UNION_PADDING_WORDS(0x60); 1331 INSERT_PADDING_WORDS_NOINIT(0x60);
1332 1332
1333 u32 firmware[0x20]; 1333 u32 firmware[0x20];
1334 1334
@@ -1345,7 +1345,7 @@ public:
1345 } 1345 }
1346 } const_buffer; 1346 } const_buffer;
1347 1347
1348 INSERT_UNION_PADDING_WORDS(0x10); 1348 INSERT_PADDING_WORDS_NOINIT(0x10);
1349 1349
1350 struct { 1350 struct {
1351 union { 1351 union {
@@ -1353,18 +1353,18 @@ public:
1353 BitField<0, 1, u32> valid; 1353 BitField<0, 1, u32> valid;
1354 BitField<4, 5, u32> index; 1354 BitField<4, 5, u32> index;
1355 }; 1355 };
1356 INSERT_UNION_PADDING_WORDS(7); 1356 INSERT_PADDING_WORDS_NOINIT(7);
1357 } cb_bind[MaxShaderStage]; 1357 } cb_bind[MaxShaderStage];
1358 1358
1359 INSERT_UNION_PADDING_WORDS(0x56); 1359 INSERT_PADDING_WORDS_NOINIT(0x56);
1360 1360
1361 u32 tex_cb_index; 1361 u32 tex_cb_index;
1362 1362
1363 INSERT_UNION_PADDING_WORDS(0x7D); 1363 INSERT_PADDING_WORDS_NOINIT(0x7D);
1364 1364
1365 std::array<std::array<u8, 128>, NumTransformFeedbackBuffers> tfb_varying_locs; 1365 std::array<std::array<u8, 128>, NumTransformFeedbackBuffers> tfb_varying_locs;
1366 1366
1367 INSERT_UNION_PADDING_WORDS(0x298); 1367 INSERT_PADDING_WORDS_NOINIT(0x298);
1368 1368
1369 struct { 1369 struct {
1370 /// Compressed address of a buffer that holds information about bound SSBOs. 1370 /// Compressed address of a buffer that holds information about bound SSBOs.
@@ -1376,14 +1376,14 @@ public:
1376 } 1376 }
1377 } ssbo_info; 1377 } ssbo_info;
1378 1378
1379 INSERT_UNION_PADDING_WORDS(0x11); 1379 INSERT_PADDING_WORDS_NOINIT(0x11);
1380 1380
1381 struct { 1381 struct {
1382 u32 address[MaxShaderStage]; 1382 u32 address[MaxShaderStage];
1383 u32 size[MaxShaderStage]; 1383 u32 size[MaxShaderStage];
1384 } tex_info_buffers; 1384 } tex_info_buffers;
1385 1385
1386 INSERT_UNION_PADDING_WORDS(0xCC); 1386 INSERT_PADDING_WORDS_NOINIT(0xCC);
1387 }; 1387 };
1388 std::array<u32, NUM_REGS> reg_array; 1388 std::array<u32, NUM_REGS> reg_array;
1389 }; 1389 };
diff --git a/src/video_core/engines/shader_header.h b/src/video_core/engines/shader_header.h
index ceec05459..e0d7b89c5 100644
--- a/src/video_core/engines/shader_header.h
+++ b/src/video_core/engines/shader_header.h
@@ -68,10 +68,10 @@ struct Header {
68 68
69 union { 69 union {
70 struct { 70 struct {
71 INSERT_UNION_PADDING_BYTES(3); // ImapSystemValuesA 71 INSERT_PADDING_BYTES_NOINIT(3); // ImapSystemValuesA
72 INSERT_UNION_PADDING_BYTES(1); // ImapSystemValuesB 72 INSERT_PADDING_BYTES_NOINIT(1); // ImapSystemValuesB
73 INSERT_UNION_PADDING_BYTES(16); // ImapGenericVector[32] 73 INSERT_PADDING_BYTES_NOINIT(16); // ImapGenericVector[32]
74 INSERT_UNION_PADDING_BYTES(2); // ImapColor 74 INSERT_PADDING_BYTES_NOINIT(2); // ImapColor
75 union { 75 union {
76 BitField<0, 8, u16> clip_distances; 76 BitField<0, 8, u16> clip_distances;
77 BitField<8, 1, u16> point_sprite_s; 77 BitField<8, 1, u16> point_sprite_s;
@@ -82,20 +82,20 @@ struct Header {
82 BitField<14, 1, u16> instance_id; 82 BitField<14, 1, u16> instance_id;
83 BitField<15, 1, u16> vertex_id; 83 BitField<15, 1, u16> vertex_id;
84 }; 84 };
85 INSERT_UNION_PADDING_BYTES(5); // ImapFixedFncTexture[10] 85 INSERT_PADDING_BYTES_NOINIT(5); // ImapFixedFncTexture[10]
86 INSERT_UNION_PADDING_BYTES(1); // ImapReserved 86 INSERT_PADDING_BYTES_NOINIT(1); // ImapReserved
87 INSERT_UNION_PADDING_BYTES(3); // OmapSystemValuesA 87 INSERT_PADDING_BYTES_NOINIT(3); // OmapSystemValuesA
88 INSERT_UNION_PADDING_BYTES(1); // OmapSystemValuesB 88 INSERT_PADDING_BYTES_NOINIT(1); // OmapSystemValuesB
89 INSERT_UNION_PADDING_BYTES(16); // OmapGenericVector[32] 89 INSERT_PADDING_BYTES_NOINIT(16); // OmapGenericVector[32]
90 INSERT_UNION_PADDING_BYTES(2); // OmapColor 90 INSERT_PADDING_BYTES_NOINIT(2); // OmapColor
91 INSERT_UNION_PADDING_BYTES(2); // OmapSystemValuesC 91 INSERT_PADDING_BYTES_NOINIT(2); // OmapSystemValuesC
92 INSERT_UNION_PADDING_BYTES(5); // OmapFixedFncTexture[10] 92 INSERT_PADDING_BYTES_NOINIT(5); // OmapFixedFncTexture[10]
93 INSERT_UNION_PADDING_BYTES(1); // OmapReserved 93 INSERT_PADDING_BYTES_NOINIT(1); // OmapReserved
94 } vtg; 94 } vtg;
95 95
96 struct { 96 struct {
97 INSERT_UNION_PADDING_BYTES(3); // ImapSystemValuesA 97 INSERT_PADDING_BYTES_NOINIT(3); // ImapSystemValuesA
98 INSERT_UNION_PADDING_BYTES(1); // ImapSystemValuesB 98 INSERT_PADDING_BYTES_NOINIT(1); // ImapSystemValuesB
99 99
100 union { 100 union {
101 BitField<0, 2, PixelImap> x; 101 BitField<0, 2, PixelImap> x;
@@ -105,10 +105,10 @@ struct Header {
105 u8 raw; 105 u8 raw;
106 } imap_generic_vector[32]; 106 } imap_generic_vector[32];
107 107
108 INSERT_UNION_PADDING_BYTES(2); // ImapColor 108 INSERT_PADDING_BYTES_NOINIT(2); // ImapColor
109 INSERT_UNION_PADDING_BYTES(2); // ImapSystemValuesC 109 INSERT_PADDING_BYTES_NOINIT(2); // ImapSystemValuesC
110 INSERT_UNION_PADDING_BYTES(10); // ImapFixedFncTexture[10] 110 INSERT_PADDING_BYTES_NOINIT(10); // ImapFixedFncTexture[10]
111 INSERT_UNION_PADDING_BYTES(2); // ImapReserved 111 INSERT_PADDING_BYTES_NOINIT(2); // ImapReserved
112 112
113 struct { 113 struct {
114 u32 target; 114 u32 target;
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index d81e38680..b4ce6b154 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -270,7 +270,7 @@ public:
270 270
271 union { 271 union {
272 struct { 272 struct {
273 INSERT_UNION_PADDING_WORDS(0x4); 273 INSERT_PADDING_WORDS_NOINIT(0x4);
274 struct { 274 struct {
275 u32 address_high; 275 u32 address_high;
276 u32 address_low; 276 u32 address_low;
@@ -283,18 +283,18 @@ public:
283 283
284 u32 semaphore_sequence; 284 u32 semaphore_sequence;
285 u32 semaphore_trigger; 285 u32 semaphore_trigger;
286 INSERT_UNION_PADDING_WORDS(0xC); 286 INSERT_PADDING_WORDS_NOINIT(0xC);
287 287
288 // The pusher and the puller share the reference counter, the pusher only has read 288 // The pusher and the puller share the reference counter, the pusher only has read
289 // access 289 // access
290 u32 reference_count; 290 u32 reference_count;
291 INSERT_UNION_PADDING_WORDS(0x5); 291 INSERT_PADDING_WORDS_NOINIT(0x5);
292 292
293 u32 semaphore_acquire; 293 u32 semaphore_acquire;
294 u32 semaphore_release; 294 u32 semaphore_release;
295 u32 fence_value; 295 u32 fence_value;
296 FenceAction fence_action; 296 FenceAction fence_action;
297 INSERT_UNION_PADDING_WORDS(0xE2); 297 INSERT_PADDING_WORDS_NOINIT(0xE2);
298 298
299 // Puller state 299 // Puller state
300 u32 acquire_mode; 300 u32 acquire_mode;