24enum class ShaderType : u32 {
31constexpr u32 kVertexIndexMask = (
static_cast<u32
>(1) <<
kVertexIndexBits) - 1;
42 kTriangleStrip = 0x06,
43 kTriangleWithWFlags = 0x07,
49 kExplicitMajorModeForceStart = 0x10,
50 k2DCopyRectListV0 = 0x10,
51 k2DCopyRectListV1 = 0x11,
52 k2DCopyRectListV2 = 0x12,
53 k2DCopyRectListV3 = 0x13,
54 k2DFillRectList = 0x14,
63enum class SampleLocation : u32 {
75constexpr u32 kMSAASamplesBits = 2;
77constexpr u32 kColorRenderTargetIndexBits = 2;
78constexpr u32 kMaxColorRenderTargets = 4;
89constexpr u32 kEDRAMSizeBytes =
static_cast<u32
>(u64{
kEDRAMTileCount} * kEDRAMTileHeightSamples *
90 kEDRAMTileWidthSamples *
sizeof(u32));
105 u32 pitch_samples = pitch_pixels << static_cast<u32>(msaa_samples >=
MSAASamples::k4X);
117enum class CompareFunction : u32 {
124 kGreaterEqual = 0b110,
129enum class StencilOp : u32 {
146 kOneMinusSrcColor = 5,
148 kOneMinusSrcAlpha = 7,
150 kOneMinusDstColor = 9,
152 kOneMinusDstAlpha = 11,
154 kOneMinusConstantColor = 13,
156 kOneMinusConstantAlpha = 15,
157 kSrcAlphaSaturate = 16,
169enum class InvalidateMask : u16 {
170 kVertexShader = 1 << 8,
171 kPixelShader = 1 << 9,
196 return major_mode != MajorMode::kImplicit ||
197 primitive_type >= PrimitiveType::kExplicitMajorModeForceStart;
219constexpr u32 kMaxShaderTempRegistersLog2 = 6;
220constexpr u32 kMaxShaderTempRegisters = UINT32_C(1) << kMaxShaderTempRegistersLog2;
225 kPosition1Vector = 0,
226 kPosition2VectorsSprite = 2,
227 kPosition2VectorsEdge = 3,
228 kPosition2VectorsKill = 4,
229 kPosition2VectorsSpriteKill = 5,
230 kPosition2VectorsEdgeKill = 6,
234constexpr u32 kMaxInterpolators = 16;
252 u32 interpolator_control_sampling_pattern) {
253 if (msaa_samples == MSAASamples::k1X || sample_control == SampleControl::kCentersOnly) {
254 return ((1 << kMaxInterpolators) - 1) * std::to_underlying(SampleLocation::kCenter);
256 if (sample_control == SampleControl::kCentroidsOnly) {
257 return ((1 << kMaxInterpolators) - 1) * std::to_underlying(SampleLocation::kCentroid);
260 return interpolator_control_sampling_pattern;
267 kTessellationEnable = 1,
272enum class TessellationMode : u32 {
286enum class PolygonType : u32 {
308enum class VertexQuantization : u32 {
324constexpr u32 kResolveAlignmentPixelsLog2 = 3;
325constexpr u32 kResolveAlignmentPixels = 1 << kResolveAlignmentPixelsLog2;
329constexpr u32 kMaxResolveSize = (1 <<
kResolveSizeBits) - kResolveAlignmentPixels;
332enum class CopyCommand : u32 {
357 return copy_sample_select >= CopySampleSelect::k0 && copy_sample_select <= CopySampleSelect::k3;
368 LE<u32> StencilFail_A;
369 LE<u32> StencilFail_B;
#define REX_ASSERT(cond,...)
Definition assert.h:84
@ kUseFetchConst
Definition fetch.h:69
@ kSubtract
Definition input_keys.h:157
@ kAdd
Definition input_keys.h:155
PolygonModeEnable
Definition state.h:280
constexpr f32 kPolygonOffsetScaleSubpixelUnit
Definition state.h:81
constexpr u32 kEDRAMTileHeightSamples
Definition state.h:86
SampleControl
Definition state.h:238
@ kCentroidsAndCenters
Definition state.h:241
constexpr u32 kResolveSizeBits
Definition state.h:328
PrimitiveType
Definition state.h:35
@ kRectangleList
Definition state.h:44
@ kQuadPatch
Definition state.h:59
@ kTrianglePatch
Definition state.h:58
@ kLinePatch
Definition state.h:57
BlendFactor
Definition state.h:142
bool IsMajorModeExplicit(MajorMode major_mode, PrimitiveType primitive_type)
Definition state.h:195
constexpr u32 kEDRAMBaseTilesBits
Definition state.h:95
constexpr u32 kEDRAMTileCount
Definition state.h:88
constexpr u32 kEDRAMTileWidthSamples
Definition state.h:84
MSAASamples
Definition state.h:69
@ k2X
Definition state.h:71
@ k4X
Definition state.h:72
constexpr u32 kVertexIndexBits
Definition state.h:30
constexpr u32 kEDRAMPitchTilesBits
Definition state.h:114
BlendOp
Definition state.h:161
@ kRevSubtract
Definition state.h:166
CopySampleSelect
Definition state.h:341
@ k01
Definition state.h:346
@ k23
Definition state.h:347
@ k0123
Definition state.h:348
ArbitraryFilter
Definition state.h:209
SourceSelect
Definition state.h:177
@ kAutoIndex
Definition state.h:180
@ kDMA
Definition state.h:178
u32 GetInterpolatorSamplingPattern(MSAASamples msaa_samples, SampleControl sample_control, u32 interpolator_control_sampling_pattern)
Definition state.h:251
VGTOutputPath
Definition state.h:265
constexpr u32 GetSurfacePitchTiles(u32 pitch_pixels, MSAASamples msaa_samples, bool is_64bpp)
Definition state.h:104
PixelCenter
Definition state.h:294
@ kD3DZero
Definition state.h:295
@ kOGLHalf
Definition state.h:296
constexpr u32 kEDRAMPitchPixelsBits
Definition state.h:93
VertexRounding
Definition state.h:300
@ kTruncate
Definition state.h:301
@ kRoundToEven
Definition state.h:303
SignedRepeatingFractionMode
Definition state.h:202
@ kNoZero
Definition state.h:204
@ kZeroClampMinusOne
Definition state.h:203
VertexShaderExportMode
Definition state.h:224
@ kMultipass
Definition state.h:231
EDRAMMode
Definition state.h:317
@ kDepthOnly
Definition state.h:320
MajorMode
Definition state.h:185
constexpr bool IsSingleCopySampleSelected(CopySampleSelect copy_sample_select)
Definition state.h:356
Integer types, byte order wrappers and size literals.