mirror of
https://github.com/pineappleEA/pineapple-src.git
synced 2024-11-25 05:28:25 -05:00
early-access version 1325
This commit is contained in:
parent
6b11334f8f
commit
9b284b6d4c
@ -1,7 +1,7 @@
|
||||
yuzu emulator early access
|
||||
=============
|
||||
|
||||
This is the source code for early-access 1324.
|
||||
This is the source code for early-access 1325.
|
||||
|
||||
## Legal Notice
|
||||
|
||||
|
@ -40,17 +40,17 @@ public:
|
||||
SinkSampleFormat sample_format;
|
||||
std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input;
|
||||
bool in_use;
|
||||
INSERT_UNION_PADDING_BYTES(5);
|
||||
INSERT_PADDING_BYTES_NOINIT(5);
|
||||
};
|
||||
static_assert(sizeof(CircularBufferIn) == 0x28,
|
||||
"SinkInfo::CircularBufferIn is in invalid size");
|
||||
|
||||
struct DeviceIn {
|
||||
std::array<u8, 255> device_name;
|
||||
INSERT_UNION_PADDING_BYTES(1);
|
||||
INSERT_PADDING_BYTES_NOINIT(1);
|
||||
s32_le input_count;
|
||||
std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input;
|
||||
INSERT_UNION_PADDING_BYTES(1);
|
||||
INSERT_PADDING_BYTES_NOINIT(1);
|
||||
bool down_matrix_enabled;
|
||||
DownmixCoefficients down_matrix_coef;
|
||||
};
|
||||
|
@ -24,10 +24,10 @@
|
||||
#define INSERT_PADDING_WORDS(num_words) \
|
||||
std::array<u32, num_words> CONCAT2(pad, __LINE__) {}
|
||||
|
||||
/// These are similar to the INSERT_PADDING_* macros, but are needed for padding unions. This is
|
||||
/// because unions can only be initialized by one member.
|
||||
#define INSERT_UNION_PADDING_BYTES(num_bytes) std::array<u8, num_bytes> CONCAT2(pad, __LINE__)
|
||||
#define INSERT_UNION_PADDING_WORDS(num_words) std::array<u32, num_words> CONCAT2(pad, __LINE__)
|
||||
/// These are similar to the INSERT_PADDING_* macros but do not zero-initialize the contents.
|
||||
/// This keeps the structure trivial to construct.
|
||||
#define INSERT_PADDING_BYTES_NOINIT(num_bytes) std::array<u8, num_bytes> CONCAT2(pad, __LINE__)
|
||||
#define INSERT_PADDING_WORDS_NOINIT(num_words) std::array<u32, num_words> CONCAT2(pad, __LINE__)
|
||||
|
||||
#ifndef _MSC_VER
|
||||
|
||||
|
@ -43,17 +43,17 @@ static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size.");
|
||||
struct IVFCHeader {
|
||||
u32_le magic;
|
||||
u32_le magic_number;
|
||||
INSERT_UNION_PADDING_BYTES(8);
|
||||
INSERT_PADDING_BYTES_NOINIT(8);
|
||||
std::array<IVFCLevel, 6> levels;
|
||||
INSERT_UNION_PADDING_BYTES(64);
|
||||
INSERT_PADDING_BYTES_NOINIT(64);
|
||||
};
|
||||
static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size.");
|
||||
|
||||
struct NCASectionHeaderBlock {
|
||||
INSERT_UNION_PADDING_BYTES(3);
|
||||
INSERT_PADDING_BYTES_NOINIT(3);
|
||||
NCASectionFilesystemType filesystem_type;
|
||||
NCASectionCryptoType crypto_type;
|
||||
INSERT_UNION_PADDING_BYTES(3);
|
||||
INSERT_PADDING_BYTES_NOINIT(3);
|
||||
};
|
||||
static_assert(sizeof(NCASectionHeaderBlock) == 0x8, "NCASectionHeaderBlock has incorrect size.");
|
||||
|
||||
@ -61,7 +61,7 @@ struct NCASectionRaw {
|
||||
NCASectionHeaderBlock header;
|
||||
std::array<u8, 0x138> block_data;
|
||||
std::array<u8, 0x8> section_ctr;
|
||||
INSERT_UNION_PADDING_BYTES(0xB8);
|
||||
INSERT_PADDING_BYTES_NOINIT(0xB8);
|
||||
};
|
||||
static_assert(sizeof(NCASectionRaw) == 0x200, "NCASectionRaw has incorrect size.");
|
||||
|
||||
@ -69,19 +69,19 @@ struct PFS0Superblock {
|
||||
NCASectionHeaderBlock header_block;
|
||||
std::array<u8, 0x20> hash;
|
||||
u32_le size;
|
||||
INSERT_UNION_PADDING_BYTES(4);
|
||||
INSERT_PADDING_BYTES_NOINIT(4);
|
||||
u64_le hash_table_offset;
|
||||
u64_le hash_table_size;
|
||||
u64_le pfs0_header_offset;
|
||||
u64_le pfs0_size;
|
||||
INSERT_UNION_PADDING_BYTES(0x1B0);
|
||||
INSERT_PADDING_BYTES_NOINIT(0x1B0);
|
||||
};
|
||||
static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size.");
|
||||
|
||||
struct RomFSSuperblock {
|
||||
NCASectionHeaderBlock header_block;
|
||||
IVFCHeader ivfc;
|
||||
INSERT_UNION_PADDING_BYTES(0x118);
|
||||
INSERT_PADDING_BYTES_NOINIT(0x118);
|
||||
};
|
||||
static_assert(sizeof(RomFSSuperblock) == 0x200, "RomFSSuperblock has incorrect size.");
|
||||
|
||||
@ -89,19 +89,19 @@ struct BKTRHeader {
|
||||
u64_le offset;
|
||||
u64_le size;
|
||||
u32_le magic;
|
||||
INSERT_UNION_PADDING_BYTES(0x4);
|
||||
INSERT_PADDING_BYTES_NOINIT(0x4);
|
||||
u32_le number_entries;
|
||||
INSERT_UNION_PADDING_BYTES(0x4);
|
||||
INSERT_PADDING_BYTES_NOINIT(0x4);
|
||||
};
|
||||
static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size.");
|
||||
|
||||
struct BKTRSuperblock {
|
||||
NCASectionHeaderBlock header_block;
|
||||
IVFCHeader ivfc;
|
||||
INSERT_UNION_PADDING_BYTES(0x18);
|
||||
INSERT_PADDING_BYTES_NOINIT(0x18);
|
||||
BKTRHeader relocation;
|
||||
BKTRHeader subsection;
|
||||
INSERT_UNION_PADDING_BYTES(0xC0);
|
||||
INSERT_PADDING_BYTES_NOINIT(0xC0);
|
||||
};
|
||||
static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size.");
|
||||
|
||||
|
@ -160,7 +160,7 @@ struct DomainMessageHeader {
|
||||
// Used when responding to an IPC request, Server -> Client.
|
||||
struct {
|
||||
u32_le num_objects;
|
||||
INSERT_UNION_PADDING_WORDS(3);
|
||||
INSERT_PADDING_WORDS_NOINIT(3);
|
||||
};
|
||||
|
||||
// Used when performing an IPC request, Client -> Server.
|
||||
@ -171,7 +171,7 @@ struct DomainMessageHeader {
|
||||
BitField<16, 16, u32> size;
|
||||
};
|
||||
u32_le object_id;
|
||||
INSERT_UNION_PADDING_WORDS(2);
|
||||
INSERT_PADDING_WORDS_NOINIT(2);
|
||||
};
|
||||
|
||||
std::array<u32, 4> raw{};
|
||||
|
@ -20,9 +20,9 @@ namespace Service::AM::Applets {
|
||||
struct ShowError {
|
||||
u8 mode;
|
||||
bool jump;
|
||||
INSERT_UNION_PADDING_BYTES(4);
|
||||
INSERT_PADDING_BYTES_NOINIT(4);
|
||||
bool use_64bit_error_code;
|
||||
INSERT_UNION_PADDING_BYTES(1);
|
||||
INSERT_PADDING_BYTES_NOINIT(1);
|
||||
u64 error_code_64;
|
||||
u32 error_code_32;
|
||||
};
|
||||
@ -32,7 +32,7 @@ static_assert(sizeof(ShowError) == 0x14, "ShowError has incorrect size.");
|
||||
struct ShowErrorRecord {
|
||||
u8 mode;
|
||||
bool jump;
|
||||
INSERT_UNION_PADDING_BYTES(6);
|
||||
INSERT_PADDING_BYTES_NOINIT(6);
|
||||
u64 error_code_64;
|
||||
u64 posix_time;
|
||||
};
|
||||
@ -41,7 +41,7 @@ static_assert(sizeof(ShowErrorRecord) == 0x18, "ShowErrorRecord has incorrect si
|
||||
struct SystemErrorArg {
|
||||
u8 mode;
|
||||
bool jump;
|
||||
INSERT_UNION_PADDING_BYTES(6);
|
||||
INSERT_PADDING_BYTES_NOINIT(6);
|
||||
u64 error_code_64;
|
||||
std::array<char, 8> language_code;
|
||||
std::array<char, 0x800> main_text;
|
||||
@ -52,7 +52,7 @@ static_assert(sizeof(SystemErrorArg) == 0x1018, "SystemErrorArg has incorrect si
|
||||
struct ApplicationErrorArg {
|
||||
u8 mode;
|
||||
bool jump;
|
||||
INSERT_UNION_PADDING_BYTES(6);
|
||||
INSERT_PADDING_BYTES_NOINIT(6);
|
||||
u32 error_code;
|
||||
std::array<char, 8> language_code;
|
||||
std::array<char, 0x800> main_text;
|
||||
|
@ -171,30 +171,30 @@ public:
|
||||
static constexpr std::size_t NUM_REGS = 0x258;
|
||||
struct {
|
||||
u32 object;
|
||||
INSERT_UNION_PADDING_WORDS(0x3F);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3F);
|
||||
u32 no_operation;
|
||||
NotifyType notify;
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
u32 wait_for_idle;
|
||||
INSERT_UNION_PADDING_WORDS(0xB);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xB);
|
||||
u32 pm_trigger;
|
||||
INSERT_UNION_PADDING_WORDS(0xF);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xF);
|
||||
u32 context_dma_notify;
|
||||
u32 dst_context_dma;
|
||||
u32 src_context_dma;
|
||||
u32 semaphore_context_dma;
|
||||
INSERT_UNION_PADDING_WORDS(0x1C);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1C);
|
||||
Surface dst;
|
||||
CpuIndexWrap pixels_from_cpu_index_wrap;
|
||||
u32 kind2d_check_enable;
|
||||
Surface src;
|
||||
SectorPromotion pixels_from_memory_sector_promotion;
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
NumTpcs num_tpcs;
|
||||
u32 render_enable_addr_upper;
|
||||
u32 render_enable_addr_lower;
|
||||
RenderEnableMode render_enable_mode;
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
u32 clip_x0;
|
||||
u32 clip_y0;
|
||||
u32 clip_width;
|
||||
@ -212,7 +212,7 @@ public:
|
||||
BitField<8, 6, u32> y;
|
||||
} pattern_offset;
|
||||
BitField<0, 2, PatternSelect> pattern_select;
|
||||
INSERT_UNION_PADDING_WORDS(0xC);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xC);
|
||||
struct {
|
||||
BitField<0, 3, MonochromePatternColorFormat> color_format;
|
||||
BitField<0, 1, MonochromePatternFormat> format;
|
||||
@ -227,15 +227,15 @@ public:
|
||||
std::array<u32, 0x20> X1R5G5B5;
|
||||
std::array<u32, 0x10> Y8;
|
||||
} color_pattern;
|
||||
INSERT_UNION_PADDING_WORDS(0x10);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x10);
|
||||
struct {
|
||||
u32 prim_mode;
|
||||
u32 prim_color_format;
|
||||
u32 prim_color;
|
||||
u32 line_tie_break_bits;
|
||||
INSERT_UNION_PADDING_WORDS(0x14);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x14);
|
||||
u32 prim_point_xy;
|
||||
INSERT_UNION_PADDING_WORDS(0x7);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x7);
|
||||
std::array<Point, 0x40> prim_point;
|
||||
} render_solid;
|
||||
struct {
|
||||
@ -247,7 +247,7 @@ public:
|
||||
u32 color0;
|
||||
u32 color1;
|
||||
u32 mono_opacity;
|
||||
INSERT_UNION_PADDING_WORDS(0x6);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x6);
|
||||
u32 src_width;
|
||||
u32 src_height;
|
||||
u32 dx_du_frac;
|
||||
@ -260,9 +260,9 @@ public:
|
||||
u32 dst_y0_int;
|
||||
u32 data;
|
||||
} pixels_from_cpu;
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
u32 big_endian_control;
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
struct {
|
||||
BitField<0, 3, u32> block_shape;
|
||||
BitField<0, 5, u32> corral_size;
|
||||
@ -271,7 +271,7 @@ public:
|
||||
BitField<0, 1, Origin> origin;
|
||||
BitField<4, 1, Filter> filter;
|
||||
} sample_mode;
|
||||
INSERT_UNION_PADDING_WORDS(0x8);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x8);
|
||||
s32 dst_x0;
|
||||
s32 dst_y0;
|
||||
s32 dst_width;
|
||||
|
@ -55,7 +55,7 @@ public:
|
||||
|
||||
union {
|
||||
struct {
|
||||
INSERT_UNION_PADDING_WORDS(0x60);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x60);
|
||||
|
||||
Upload::Registers upload;
|
||||
|
||||
@ -67,7 +67,7 @@ public:
|
||||
|
||||
u32 data_upload;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3F);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3F);
|
||||
|
||||
struct {
|
||||
u32 address;
|
||||
@ -76,11 +76,11 @@ public:
|
||||
}
|
||||
} launch_desc_loc;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
u32 launch;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4A7);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4A7);
|
||||
|
||||
struct {
|
||||
u32 address_high;
|
||||
@ -92,7 +92,7 @@ public:
|
||||
}
|
||||
} tsc;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
|
||||
struct {
|
||||
u32 address_high;
|
||||
@ -104,7 +104,7 @@ public:
|
||||
}
|
||||
} tic;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x22);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x22);
|
||||
|
||||
struct {
|
||||
u32 address_high;
|
||||
@ -115,11 +115,11 @@ public:
|
||||
}
|
||||
} code_loc;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3FE);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3FE);
|
||||
|
||||
u32 tex_cb_index;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x374);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x374);
|
||||
};
|
||||
std::array<u32, NUM_REGS> reg_array;
|
||||
};
|
||||
|
@ -50,7 +50,7 @@ public:
|
||||
|
||||
union {
|
||||
struct {
|
||||
INSERT_UNION_PADDING_WORDS(0x60);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x60);
|
||||
|
||||
Upload::Registers upload;
|
||||
|
||||
@ -62,7 +62,7 @@ public:
|
||||
|
||||
u32 data;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x11);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x11);
|
||||
};
|
||||
std::array<u32, NUM_REGS> reg_array;
|
||||
};
|
||||
|
@ -536,7 +536,7 @@ public:
|
||||
Equation equation_a;
|
||||
Factor factor_source_a;
|
||||
Factor factor_dest_a;
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
};
|
||||
|
||||
enum class TessellationPrimitive : u32 {
|
||||
@ -608,7 +608,7 @@ public:
|
||||
};
|
||||
u32 layer_stride;
|
||||
u32 base_layer;
|
||||
INSERT_UNION_PADDING_WORDS(7);
|
||||
INSERT_PADDING_WORDS_NOINIT(7);
|
||||
|
||||
GPUVAddr Address() const {
|
||||
return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) |
|
||||
@ -640,7 +640,7 @@ public:
|
||||
BitField<8, 3, ViewportSwizzle> z;
|
||||
BitField<12, 3, ViewportSwizzle> w;
|
||||
} swizzle;
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
|
||||
Common::Rectangle<f32> GetRect() const {
|
||||
return {
|
||||
@ -700,7 +700,7 @@ public:
|
||||
u32 address_low;
|
||||
s32 buffer_size;
|
||||
s32 buffer_offset;
|
||||
INSERT_UNION_PADDING_WORDS(3);
|
||||
INSERT_PADDING_WORDS_NOINIT(3);
|
||||
|
||||
GPUVAddr Address() const {
|
||||
return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) |
|
||||
@ -713,7 +713,7 @@ public:
|
||||
u32 stream;
|
||||
u32 varying_count;
|
||||
u32 stride;
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
};
|
||||
static_assert(sizeof(TransformFeedbackLayout) == 16);
|
||||
|
||||
@ -731,7 +731,7 @@ public:
|
||||
|
||||
union {
|
||||
struct {
|
||||
INSERT_UNION_PADDING_WORDS(0x44);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x44);
|
||||
|
||||
u32 wait_for_idle;
|
||||
|
||||
@ -744,7 +744,7 @@ public:
|
||||
|
||||
ShadowRamControl shadow_ram_control;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x16);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x16);
|
||||
|
||||
Upload::Registers upload;
|
||||
struct {
|
||||
@ -755,11 +755,11 @@ public:
|
||||
|
||||
u32 data_upload;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x16);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x16);
|
||||
|
||||
u32 force_early_fragment_tests;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2D);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2D);
|
||||
|
||||
struct {
|
||||
union {
|
||||
@ -769,7 +769,7 @@ public:
|
||||
};
|
||||
} sync_info;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x15);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x15);
|
||||
|
||||
union {
|
||||
BitField<0, 2, TessellationPrimitive> prim;
|
||||
@ -781,21 +781,21 @@ public:
|
||||
std::array<f32, 4> tess_level_outer;
|
||||
std::array<f32, 2> tess_level_inner;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x10);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x10);
|
||||
|
||||
u32 rasterize_enable;
|
||||
|
||||
std::array<TransformFeedbackBinding, NumTransformFeedbackBuffers> tfb_bindings;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0xC0);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xC0);
|
||||
|
||||
std::array<TransformFeedbackLayout, NumTransformFeedbackBuffers> tfb_layouts;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
u32 tfb_enabled;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2E);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2E);
|
||||
|
||||
std::array<RenderTargetConfig, NumRenderTargets> rt;
|
||||
|
||||
@ -803,7 +803,7 @@ public:
|
||||
|
||||
std::array<ViewPort, NumViewports> viewports;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1D);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1D);
|
||||
|
||||
struct {
|
||||
u32 first;
|
||||
@ -815,16 +815,16 @@ public:
|
||||
float clear_color[4];
|
||||
float clear_depth;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
|
||||
s32 clear_stencil;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
PolygonMode polygon_mode_front;
|
||||
PolygonMode polygon_mode_back;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
|
||||
u32 polygon_offset_point_enable;
|
||||
u32 polygon_offset_line_enable;
|
||||
@ -832,47 +832,47 @@ public:
|
||||
|
||||
u32 patch_vertices;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
u32 fragment_barrier;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x7);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x7);
|
||||
|
||||
std::array<ScissorTest, NumViewports> scissor_test;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x15);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x15);
|
||||
|
||||
s32 stencil_back_func_ref;
|
||||
u32 stencil_back_mask;
|
||||
u32 stencil_back_func_mask;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x5);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x5);
|
||||
|
||||
u32 invalidate_texture_data_cache;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
u32 tiled_cache_barrier;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
u32 color_mask_common;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
f32 depth_bounds[2];
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
u32 rt_separate_frag_data;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
u32 multisample_raster_enable;
|
||||
u32 multisample_raster_samples;
|
||||
std::array<u32, 4> multisample_sample_mask;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x5);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x5);
|
||||
|
||||
struct {
|
||||
u32 address_high;
|
||||
@ -898,7 +898,7 @@ public:
|
||||
};
|
||||
} render_area;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3F);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3F);
|
||||
|
||||
union {
|
||||
BitField<0, 4, u32> stencil;
|
||||
@ -907,24 +907,24 @@ public:
|
||||
BitField<12, 4, u32> viewport;
|
||||
} clear_flags;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x10);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x10);
|
||||
|
||||
u32 fill_rectangle;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x8);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x8);
|
||||
|
||||
std::array<VertexAttribute, NumVertexAttributes> vertex_attrib_format;
|
||||
|
||||
std::array<MsaaSampleLocation, 4> multisample_sample_locations;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
union {
|
||||
BitField<0, 1, u32> enable;
|
||||
BitField<4, 3, u32> target;
|
||||
} multisample_coverage_to_color;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x8);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x8);
|
||||
|
||||
struct {
|
||||
union {
|
||||
@ -947,7 +947,7 @@ public:
|
||||
}
|
||||
} rt_control;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
u32 zeta_width;
|
||||
u32 zeta_height;
|
||||
@ -958,11 +958,11 @@ public:
|
||||
|
||||
SamplerIndex sampler_index;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x25);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x25);
|
||||
|
||||
u32 depth_test_enable;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x5);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x5);
|
||||
|
||||
u32 independent_blend_enable;
|
||||
|
||||
@ -970,7 +970,7 @@ public:
|
||||
|
||||
u32 alpha_test_enabled;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x6);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x6);
|
||||
|
||||
u32 d3d_cull_mode;
|
||||
|
||||
@ -985,7 +985,7 @@ public:
|
||||
float a;
|
||||
} blend_color;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
struct {
|
||||
u32 separate_alpha;
|
||||
@ -994,7 +994,7 @@ public:
|
||||
Blend::Factor factor_dest_rgb;
|
||||
Blend::Equation equation_a;
|
||||
Blend::Factor factor_source_a;
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
Blend::Factor factor_dest_a;
|
||||
|
||||
u32 enable_common;
|
||||
@ -1010,7 +1010,7 @@ public:
|
||||
u32 stencil_front_func_mask;
|
||||
u32 stencil_front_mask;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
u32 frag_color_clamp;
|
||||
|
||||
@ -1022,17 +1022,17 @@ public:
|
||||
float line_width_smooth;
|
||||
float line_width_aliased;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1B);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1B);
|
||||
|
||||
u32 invalidate_sampler_cache_no_wfi;
|
||||
u32 invalidate_texture_header_cache_no_wfi;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x2);
|
||||
|
||||
u32 vb_element_base;
|
||||
u32 vb_base_instance;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x35);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x35);
|
||||
|
||||
u32 clip_distance_enabled;
|
||||
|
||||
@ -1040,11 +1040,11 @@ public:
|
||||
|
||||
float point_size;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
u32 point_sprite_enable;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
|
||||
CounterReset counter_reset;
|
||||
|
||||
@ -1057,7 +1057,7 @@ public:
|
||||
BitField<4, 1, u32> alpha_to_one;
|
||||
} multisample_control;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
struct {
|
||||
u32 address_high;
|
||||
@ -1081,7 +1081,7 @@ public:
|
||||
}
|
||||
} tsc;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
float polygon_offset_factor;
|
||||
|
||||
@ -1098,7 +1098,7 @@ public:
|
||||
}
|
||||
} tic;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x5);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x5);
|
||||
|
||||
u32 stencil_two_side_enable;
|
||||
StencilOp stencil_back_op_fail;
|
||||
@ -1106,17 +1106,17 @@ public:
|
||||
StencilOp stencil_back_op_zpass;
|
||||
ComparisonOp stencil_back_func_func;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
u32 framebuffer_srgb;
|
||||
|
||||
float polygon_offset_units;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
Tegra::Texture::MsaaMode multisample_mode;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0xC);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xC);
|
||||
|
||||
union {
|
||||
BitField<2, 1, u32> coord_origin;
|
||||
@ -1132,7 +1132,7 @@ public:
|
||||
(static_cast<GPUVAddr>(code_address_high) << 32) | code_address_low);
|
||||
}
|
||||
} code_address;
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
|
||||
struct {
|
||||
u32 vertex_end_gl;
|
||||
@ -1144,14 +1144,14 @@ public:
|
||||
};
|
||||
} draw;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0xA);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xA);
|
||||
|
||||
struct {
|
||||
u32 enabled;
|
||||
u32 index;
|
||||
} primitive_restart;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x5F);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x5F);
|
||||
|
||||
struct {
|
||||
u32 start_addr_high;
|
||||
@ -1192,9 +1192,9 @@ public:
|
||||
}
|
||||
} index_array;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x7);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x7);
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1F);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1F);
|
||||
|
||||
float polygon_offset_clamp;
|
||||
|
||||
@ -1208,14 +1208,14 @@ public:
|
||||
}
|
||||
} instanced_arrays;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
|
||||
union {
|
||||
BitField<0, 1, u32> enable;
|
||||
BitField<4, 8, u32> unk4;
|
||||
} vp_point_size;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
|
||||
u32 cull_test_enabled;
|
||||
FrontFace front_face;
|
||||
@ -1223,11 +1223,11 @@ public:
|
||||
|
||||
u32 pixel_center_integer;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
u32 viewport_transform_enabled;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3);
|
||||
|
||||
union {
|
||||
BitField<0, 1, u32> depth_range_0_1;
|
||||
@ -1236,18 +1236,18 @@ public:
|
||||
BitField<11, 1, u32> depth_clamp_disabled;
|
||||
} view_volume_clip_control;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1F);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1F);
|
||||
|
||||
u32 depth_bounds_enable;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(1);
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
|
||||
struct {
|
||||
u32 enable;
|
||||
LogicOperation operation;
|
||||
} logic_op;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x1);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x1);
|
||||
|
||||
union {
|
||||
u32 raw;
|
||||
@ -1260,9 +1260,9 @@ public:
|
||||
BitField<6, 4, u32> RT;
|
||||
BitField<10, 11, u32> layer;
|
||||
} clear_buffers;
|
||||
INSERT_UNION_PADDING_WORDS(0xB);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xB);
|
||||
std::array<ColorMask, NumRenderTargets> color_mask;
|
||||
INSERT_UNION_PADDING_WORDS(0x38);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x38);
|
||||
|
||||
struct {
|
||||
u32 query_address_high;
|
||||
@ -1284,7 +1284,7 @@ public:
|
||||
}
|
||||
} query;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x3C);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x3C);
|
||||
|
||||
struct {
|
||||
union {
|
||||
@ -1325,10 +1325,10 @@ public:
|
||||
BitField<4, 4, ShaderProgram> program;
|
||||
};
|
||||
u32 offset;
|
||||
INSERT_UNION_PADDING_WORDS(14);
|
||||
INSERT_PADDING_WORDS_NOINIT(14);
|
||||
} shader_config[MaxShaderProgram];
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x60);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x60);
|
||||
|
||||
u32 firmware[0x20];
|
||||
|
||||
@ -1345,7 +1345,7 @@ public:
|
||||
}
|
||||
} const_buffer;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x10);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x10);
|
||||
|
||||
struct {
|
||||
union {
|
||||
@ -1353,18 +1353,18 @@ public:
|
||||
BitField<0, 1, u32> valid;
|
||||
BitField<4, 5, u32> index;
|
||||
};
|
||||
INSERT_UNION_PADDING_WORDS(7);
|
||||
INSERT_PADDING_WORDS_NOINIT(7);
|
||||
} cb_bind[MaxShaderStage];
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x56);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x56);
|
||||
|
||||
u32 tex_cb_index;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x7D);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x7D);
|
||||
|
||||
std::array<std::array<u8, 128>, NumTransformFeedbackBuffers> tfb_varying_locs;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x298);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x298);
|
||||
|
||||
struct {
|
||||
/// Compressed address of a buffer that holds information about bound SSBOs.
|
||||
@ -1376,14 +1376,14 @@ public:
|
||||
}
|
||||
} ssbo_info;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0x11);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x11);
|
||||
|
||||
struct {
|
||||
u32 address[MaxShaderStage];
|
||||
u32 size[MaxShaderStage];
|
||||
} tex_info_buffers;
|
||||
|
||||
INSERT_UNION_PADDING_WORDS(0xCC);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xCC);
|
||||
};
|
||||
std::array<u32, NUM_REGS> reg_array;
|
||||
};
|
||||
|
@ -68,10 +68,10 @@ struct Header {
|
||||
|
||||
union {
|
||||
struct {
|
||||
INSERT_UNION_PADDING_BYTES(3); // ImapSystemValuesA
|
||||
INSERT_UNION_PADDING_BYTES(1); // ImapSystemValuesB
|
||||
INSERT_UNION_PADDING_BYTES(16); // ImapGenericVector[32]
|
||||
INSERT_UNION_PADDING_BYTES(2); // ImapColor
|
||||
INSERT_PADDING_BYTES_NOINIT(3); // ImapSystemValuesA
|
||||
INSERT_PADDING_BYTES_NOINIT(1); // ImapSystemValuesB
|
||||
INSERT_PADDING_BYTES_NOINIT(16); // ImapGenericVector[32]
|
||||
INSERT_PADDING_BYTES_NOINIT(2); // ImapColor
|
||||
union {
|
||||
BitField<0, 8, u16> clip_distances;
|
||||
BitField<8, 1, u16> point_sprite_s;
|
||||
@ -82,20 +82,20 @@ struct Header {
|
||||
BitField<14, 1, u16> instance_id;
|
||||
BitField<15, 1, u16> vertex_id;
|
||||
};
|
||||
INSERT_UNION_PADDING_BYTES(5); // ImapFixedFncTexture[10]
|
||||
INSERT_UNION_PADDING_BYTES(1); // ImapReserved
|
||||
INSERT_UNION_PADDING_BYTES(3); // OmapSystemValuesA
|
||||
INSERT_UNION_PADDING_BYTES(1); // OmapSystemValuesB
|
||||
INSERT_UNION_PADDING_BYTES(16); // OmapGenericVector[32]
|
||||
INSERT_UNION_PADDING_BYTES(2); // OmapColor
|
||||
INSERT_UNION_PADDING_BYTES(2); // OmapSystemValuesC
|
||||
INSERT_UNION_PADDING_BYTES(5); // OmapFixedFncTexture[10]
|
||||
INSERT_UNION_PADDING_BYTES(1); // OmapReserved
|
||||
INSERT_PADDING_BYTES_NOINIT(5); // ImapFixedFncTexture[10]
|
||||
INSERT_PADDING_BYTES_NOINIT(1); // ImapReserved
|
||||
INSERT_PADDING_BYTES_NOINIT(3); // OmapSystemValuesA
|
||||
INSERT_PADDING_BYTES_NOINIT(1); // OmapSystemValuesB
|
||||
INSERT_PADDING_BYTES_NOINIT(16); // OmapGenericVector[32]
|
||||
INSERT_PADDING_BYTES_NOINIT(2); // OmapColor
|
||||
INSERT_PADDING_BYTES_NOINIT(2); // OmapSystemValuesC
|
||||
INSERT_PADDING_BYTES_NOINIT(5); // OmapFixedFncTexture[10]
|
||||
INSERT_PADDING_BYTES_NOINIT(1); // OmapReserved
|
||||
} vtg;
|
||||
|
||||
struct {
|
||||
INSERT_UNION_PADDING_BYTES(3); // ImapSystemValuesA
|
||||
INSERT_UNION_PADDING_BYTES(1); // ImapSystemValuesB
|
||||
INSERT_PADDING_BYTES_NOINIT(3); // ImapSystemValuesA
|
||||
INSERT_PADDING_BYTES_NOINIT(1); // ImapSystemValuesB
|
||||
|
||||
union {
|
||||
BitField<0, 2, PixelImap> x;
|
||||
@ -105,10 +105,10 @@ struct Header {
|
||||
u8 raw;
|
||||
} imap_generic_vector[32];
|
||||
|
||||
INSERT_UNION_PADDING_BYTES(2); // ImapColor
|
||||
INSERT_UNION_PADDING_BYTES(2); // ImapSystemValuesC
|
||||
INSERT_UNION_PADDING_BYTES(10); // ImapFixedFncTexture[10]
|
||||
INSERT_UNION_PADDING_BYTES(2); // ImapReserved
|
||||
INSERT_PADDING_BYTES_NOINIT(2); // ImapColor
|
||||
INSERT_PADDING_BYTES_NOINIT(2); // ImapSystemValuesC
|
||||
INSERT_PADDING_BYTES_NOINIT(10); // ImapFixedFncTexture[10]
|
||||
INSERT_PADDING_BYTES_NOINIT(2); // ImapReserved
|
||||
|
||||
struct {
|
||||
u32 target;
|
||||
|
@ -270,7 +270,7 @@ public:
|
||||
|
||||
union {
|
||||
struct {
|
||||
INSERT_UNION_PADDING_WORDS(0x4);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x4);
|
||||
struct {
|
||||
u32 address_high;
|
||||
u32 address_low;
|
||||
@ -283,18 +283,18 @@ public:
|
||||
|
||||
u32 semaphore_sequence;
|
||||
u32 semaphore_trigger;
|
||||
INSERT_UNION_PADDING_WORDS(0xC);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xC);
|
||||
|
||||
// The pusher and the puller share the reference counter, the pusher only has read
|
||||
// access
|
||||
u32 reference_count;
|
||||
INSERT_UNION_PADDING_WORDS(0x5);
|
||||
INSERT_PADDING_WORDS_NOINIT(0x5);
|
||||
|
||||
u32 semaphore_acquire;
|
||||
u32 semaphore_release;
|
||||
u32 fence_value;
|
||||
FenceAction fence_action;
|
||||
INSERT_UNION_PADDING_WORDS(0xE2);
|
||||
INSERT_PADDING_WORDS_NOINIT(0xE2);
|
||||
|
||||
// Puller state
|
||||
u32 acquire_mode;
|
||||
|
Loading…
Reference in New Issue
Block a user