Merge commit 'd94eccab99da355a1ad43494aec3c479b13b35dc' as 'external/parallel-rdp/parallel-rdp-standalone'
This commit is contained in:
347
external/parallel-rdp/parallel-rdp-standalone/parallel-rdp/shaders/data_structures.h
vendored
Normal file
347
external/parallel-rdp/parallel-rdp-standalone/parallel-rdp/shaders/data_structures.h
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
/* Copyright (c) 2020 Themaister
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef DATA_STRUCTURES_H_
|
||||
#define DATA_STRUCTURES_H_
|
||||
|
||||
// Data structures which are supposed to match up with rdp_data_structures.hpp.
|
||||
// A little dirty to duplicate like this, but it's non-trivial to share headers with C++,
|
||||
// especially when we need to deal with small integer types.
|
||||
|
||||
const int TRIANGLE_SETUP_FLIP_BIT = 1 << 0;
|
||||
const int TRIANGLE_SETUP_DO_OFFSET_BIT = 1 << 1;
|
||||
const int TRIANGLE_SETUP_SKIP_XFRAC_BIT = 1 << 2;
|
||||
const int TRIANGLE_SETUP_INTERLACE_FIELD_BIT = 1 << 3;
|
||||
const int TRIANGLE_SETUP_INTERLACE_KEEP_ODD_BIT = 1 << 4;
|
||||
const int TRIANGLE_SETUP_DISABLE_UPSCALING_BIT = 1 << 5;
|
||||
const int TRIANGLE_SETUP_NATIVE_LOD_BIT = 1 << 6;
|
||||
const int TRIANGLE_SETUP_FILL_COPY_RASTER_BIT = 1 << 7;
|
||||
|
||||
const int RASTERIZATION_INTERLACE_FIELD_BIT = 1 << 0;
|
||||
const int RASTERIZATION_INTERLACE_KEEP_ODD_BIT = 1 << 1;
|
||||
const int RASTERIZATION_AA_BIT = 1 << 2;
|
||||
const int RASTERIZATION_PERSPECTIVE_CORRECT_BIT = 1 << 3;
|
||||
const int RASTERIZATION_TLUT_BIT = 1 << 4;
|
||||
const int RASTERIZATION_TLUT_TYPE_BIT = 1 << 5;
|
||||
const int RASTERIZATION_CVG_TIMES_ALPHA_BIT = 1 << 6;
|
||||
const int RASTERIZATION_ALPHA_CVG_SELECT_BIT = 1 << 7;
|
||||
const int RASTERIZATION_MULTI_CYCLE_BIT = 1 << 8;
|
||||
const int RASTERIZATION_TEX_LOD_ENABLE_BIT = 1 << 9;
|
||||
const int RASTERIZATION_SHARPEN_LOD_ENABLE_BIT = 1 << 10;
|
||||
const int RASTERIZATION_DETAIL_LOD_ENABLE_BIT = 1 << 11;
|
||||
const int RASTERIZATION_FILL_BIT = 1 << 12;
|
||||
const int RASTERIZATION_COPY_BIT = 1 << 13;
|
||||
const int RASTERIZATION_SAMPLE_MODE_BIT = 1 << 14;
|
||||
const int RASTERIZATION_ALPHA_TEST_BIT = 1 << 15;
|
||||
const int RASTERIZATION_ALPHA_TEST_DITHER_BIT = 1 << 16;
|
||||
const int RASTERIZATION_SAMPLE_MID_TEXEL_BIT = 1 << 17;
|
||||
const int RASTERIZATION_USES_TEXEL0_BIT = 1 << 18;
|
||||
const int RASTERIZATION_USES_TEXEL1_BIT = 1 << 19;
|
||||
const int RASTERIZATION_USES_LOD_BIT = 1 << 20;
|
||||
const int RASTERIZATION_USES_PIPELINED_TEXEL1_BIT = 1 << 21;
|
||||
const int RASTERIZATION_CONVERT_ONE_BIT = 1 << 22;
|
||||
const int RASTERIZATION_BILERP_0_BIT = 1 << 23;
|
||||
const int RASTERIZATION_BILERP_1_BIT = 1 << 24;
|
||||
const int RASTERIZATION_NEED_NOISE_DUAL_BIT = 1 << 25;
|
||||
const int RASTERIZATION_UPSCALING_LOG2_BIT_OFFSET = 26;
|
||||
const int RASTERIZATION_NEED_NOISE_BIT = 1 << 28;
|
||||
const int RASTERIZATION_USE_STATIC_TEXTURE_SIZE_FORMAT_BIT = 1 << 29;
|
||||
const int RASTERIZATION_USE_SPECIALIZATION_CONSTANT_BIT = 1 << 30;
|
||||
|
||||
const int DEPTH_BLEND_DEPTH_TEST_BIT = 1 << 0;
|
||||
const int DEPTH_BLEND_DEPTH_UPDATE_BIT = 1 << 1;
|
||||
const int DEPTH_BLEND_FORCE_BLEND_BIT = 1 << 3;
|
||||
const int DEPTH_BLEND_IMAGE_READ_ENABLE_BIT = 1 << 4;
|
||||
const int DEPTH_BLEND_COLOR_ON_COVERAGE_BIT = 1 << 5;
|
||||
const int DEPTH_BLEND_MULTI_CYCLE_BIT = 1 << 6;
|
||||
const int DEPTH_BLEND_AA_BIT = 1 << 7;
|
||||
const int DEPTH_BLEND_DITHER_ENABLE_BIT = 1 << 8;
|
||||
|
||||
struct TriangleSetupMem
|
||||
{
|
||||
int xh, xm, xl;
|
||||
mem_i16 yh, ym;
|
||||
int dxhdy, dxmdy, dxldy;
|
||||
mem_i16 yl; mem_u8 flags; mem_u8 tile;
|
||||
};
|
||||
|
||||
#if SMALL_TYPES
|
||||
#define TriangleSetup TriangleSetupMem
|
||||
#else
|
||||
struct TriangleSetup
|
||||
{
|
||||
int xh, xm, xl;
|
||||
i16 yh, ym;
|
||||
int dxhdy, dxmdy, dxldy;
|
||||
i16 yl; u8 flags; u8 tile;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct AttributeSetupMem
|
||||
{
|
||||
ivec4 rgba;
|
||||
ivec4 drgba_dx;
|
||||
ivec4 drgba_de;
|
||||
ivec4 drgba_dy;
|
||||
|
||||
ivec4 stzw;
|
||||
ivec4 dstzw_dx;
|
||||
ivec4 dstzw_de;
|
||||
ivec4 dstzw_dy;
|
||||
};
|
||||
#define AttributeSetup AttributeSetupMem
|
||||
|
||||
struct SpanSetupMem
|
||||
{
|
||||
ivec4 rgba;
|
||||
ivec4 stzw;
|
||||
|
||||
mem_u16x4 xleft;
|
||||
mem_u16x4 xright;
|
||||
|
||||
int interpolation_base_x;
|
||||
int start_x;
|
||||
int end_x;
|
||||
mem_i16 lodlength;
|
||||
mem_u16 valid_line;
|
||||
};
|
||||
#if SMALL_TYPES
|
||||
#define SpanSetup SpanSetupMem
|
||||
#else
|
||||
struct SpanSetup
|
||||
{
|
||||
ivec4 rgba;
|
||||
ivec4 stzw;
|
||||
|
||||
u16x4 xleft;
|
||||
u16x4 xright;
|
||||
|
||||
int interpolation_base_x;
|
||||
int start_x;
|
||||
int end_x;
|
||||
i16 lodlength;
|
||||
u16 valid_line;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct SpanInfoOffsetsMem
|
||||
{
|
||||
int offset;
|
||||
int ylo;
|
||||
int yhi;
|
||||
int padding;
|
||||
};
|
||||
#define SpanInfoOffsets SpanInfoOffsetsMem
|
||||
|
||||
struct DerivedSetupMem
|
||||
{
|
||||
mem_u8x4 constant_muladd0;
|
||||
mem_u8x4 constant_mulsub0;
|
||||
mem_u8x4 constant_mul0;
|
||||
mem_u8x4 constant_add0;
|
||||
|
||||
mem_u8x4 constant_muladd1;
|
||||
mem_u8x4 constant_mulsub1;
|
||||
mem_u8x4 constant_mul1;
|
||||
mem_u8x4 constant_add1;
|
||||
|
||||
mem_u8x4 fog_color;
|
||||
mem_u8x4 blend_color;
|
||||
uint fill_color;
|
||||
|
||||
mem_u16 dz;
|
||||
mem_u8 dz_compressed;
|
||||
mem_u8 min_lod;
|
||||
|
||||
mem_i16x4 factors;
|
||||
};
|
||||
|
||||
#if SMALL_TYPES
|
||||
#define DerivedSetup DerivedSetupMem
|
||||
#else
|
||||
struct DerivedSetup
|
||||
{
|
||||
u8x4 constant_muladd0;
|
||||
u8x4 constant_mulsub0;
|
||||
u8x4 constant_mul0;
|
||||
u8x4 constant_add0;
|
||||
|
||||
u8x4 constant_muladd1;
|
||||
u8x4 constant_mulsub1;
|
||||
u8x4 constant_mul1;
|
||||
u8x4 constant_add1;
|
||||
|
||||
u8x4 fog_color;
|
||||
u8x4 blend_color;
|
||||
uint fill_color;
|
||||
|
||||
u16 dz;
|
||||
u8 dz_compressed;
|
||||
u8 min_lod;
|
||||
|
||||
i16x4 factors;
|
||||
};
|
||||
#endif
|
||||
|
||||
#define ScissorStateMem ivec4
|
||||
|
||||
struct ScissorState
|
||||
{
|
||||
int xlo, ylo, xhi, yhi;
|
||||
};
|
||||
|
||||
const int TILE_INFO_CLAMP_S_BIT = 1 << 0;
|
||||
const int TILE_INFO_MIRROR_S_BIT = 1 << 1;
|
||||
const int TILE_INFO_CLAMP_T_BIT = 1 << 2;
|
||||
const int TILE_INFO_MIRROR_T_BIT = 1 << 3;
|
||||
|
||||
struct TileInfoMem
|
||||
{
|
||||
uint slo;
|
||||
uint shi;
|
||||
uint tlo;
|
||||
uint thi;
|
||||
uint offset;
|
||||
uint stride;
|
||||
mem_u8 fmt;
|
||||
mem_u8 size;
|
||||
mem_u8 palette;
|
||||
mem_u8 mask_s;
|
||||
mem_u8 shift_s;
|
||||
mem_u8 mask_t;
|
||||
mem_u8 shift_t;
|
||||
mem_u8 flags;
|
||||
};
|
||||
|
||||
#if SMALL_TYPES
|
||||
#define TileInfo TileInfoMem
|
||||
#else
|
||||
struct TileInfo
|
||||
{
|
||||
uint slo;
|
||||
uint shi;
|
||||
uint tlo;
|
||||
uint thi;
|
||||
uint offset;
|
||||
uint stride;
|
||||
u8 fmt;
|
||||
u8 size;
|
||||
u8 palette;
|
||||
u8 mask_s;
|
||||
u8 shift_s;
|
||||
u8 mask_t;
|
||||
u8 shift_t;
|
||||
u8 flags;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct StaticRasterizationStateMem
|
||||
{
|
||||
mem_u8x4 combiner_inputs_rgb0;
|
||||
mem_u8x4 combiner_inputs_alpha0;
|
||||
mem_u8x4 combiner_inputs_rgb1;
|
||||
mem_u8x4 combiner_inputs_alpha1;
|
||||
uint flags;
|
||||
int dither;
|
||||
int texture_size;
|
||||
int texture_fmt;
|
||||
};
|
||||
|
||||
#if SMALL_TYPES
|
||||
#define StaticRasterizationState StaticRasterizationStateMem
|
||||
#else
|
||||
struct StaticRasterizationState
|
||||
{
|
||||
u8x4 combiner_inputs_rgb0;
|
||||
u8x4 combiner_inputs_alpha0;
|
||||
u8x4 combiner_inputs_rgb1;
|
||||
u8x4 combiner_inputs_alpha1;
|
||||
uint flags;
|
||||
int dither;
|
||||
int texture_size;
|
||||
int texture_fmt;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct DepthBlendStateMem
|
||||
{
|
||||
mem_u8x4 blend_modes0;
|
||||
mem_u8x4 blend_modes1;
|
||||
uint flags;
|
||||
mem_u8 coverage_mode;
|
||||
mem_u8 z_mode;
|
||||
mem_u8 padding0;
|
||||
mem_u8 padding1;
|
||||
};
|
||||
|
||||
#if SMALL_TYPES
|
||||
#define DepthBlendState DepthBlendStateMem
|
||||
#else
|
||||
struct DepthBlendState
|
||||
{
|
||||
u8x4 blend_modes0;
|
||||
u8x4 blend_modes1;
|
||||
uint flags;
|
||||
u8 coverage_mode;
|
||||
u8 z_mode;
|
||||
u8 padding0;
|
||||
u8 padding1;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct InstanceIndicesMem
|
||||
{
|
||||
mem_u8x4 static_depth_tmem;
|
||||
mem_u8x4 other;
|
||||
mem_u8 tile_infos[8];
|
||||
};
|
||||
|
||||
struct TMEMInstance16Mem
|
||||
{
|
||||
mem_u16 elems[2048];
|
||||
};
|
||||
|
||||
struct TMEMInstance8Mem
|
||||
{
|
||||
mem_u8 elems[4096];
|
||||
};
|
||||
|
||||
struct ShadedData
|
||||
{
|
||||
u8x4 combined;
|
||||
int z_dith;
|
||||
u8 coverage_count;
|
||||
u8 shade_alpha;
|
||||
};
|
||||
|
||||
const int COVERAGE_FILL_BIT = 0x40;
|
||||
const int COVERAGE_COPY_BIT = 0x20;
|
||||
|
||||
struct GlobalFBInfo
|
||||
{
|
||||
int dx_shift;
|
||||
int dx_mask;
|
||||
int fb_size;
|
||||
uint base_primitive_index;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user