|
|
@ -20,6 +20,9 @@ |
|
|
namespace Tegra { |
|
|
namespace Tegra { |
|
|
namespace Engines { |
|
|
namespace Engines { |
|
|
|
|
|
|
|
|
|
|
|
#define MAXWELL3D_REG_INDEX(field_name) \ |
|
|
|
|
|
(offsetof(Tegra::Engines::Maxwell3D::Regs, field_name) / sizeof(u32)) |
|
|
|
|
|
|
|
|
class Maxwell3D final { |
|
|
class Maxwell3D final { |
|
|
public: |
|
|
public: |
|
|
explicit Maxwell3D(MemoryManager& memory_manager); |
|
|
explicit Maxwell3D(MemoryManager& memory_manager); |
|
|
@ -254,6 +257,46 @@ public: |
|
|
UnsignedInt = 0x2, |
|
|
UnsignedInt = 0x2, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct Blend { |
|
|
|
|
|
enum class Equation : u32 { |
|
|
|
|
|
Add = 1, |
|
|
|
|
|
Subtract = 2, |
|
|
|
|
|
ReverseSubtract = 3, |
|
|
|
|
|
Min = 4, |
|
|
|
|
|
Max = 5, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
enum class Factor : u32 { |
|
|
|
|
|
Zero = 0x1, |
|
|
|
|
|
One = 0x2, |
|
|
|
|
|
SourceColor = 0x3, |
|
|
|
|
|
OneMinusSourceColor = 0x4, |
|
|
|
|
|
SourceAlpha = 0x5, |
|
|
|
|
|
OneMinusSourceAlpha = 0x6, |
|
|
|
|
|
DestAlpha = 0x7, |
|
|
|
|
|
OneMinusDestAlpha = 0x8, |
|
|
|
|
|
DestColor = 0x9, |
|
|
|
|
|
OneMinusDestColor = 0xa, |
|
|
|
|
|
SourceAlphaSaturate = 0xb, |
|
|
|
|
|
Source1Color = 0x10, |
|
|
|
|
|
OneMinusSource1Color = 0x11, |
|
|
|
|
|
Source1Alpha = 0x12, |
|
|
|
|
|
OneMinusSource1Alpha = 0x13, |
|
|
|
|
|
ConstantColor = 0x61, |
|
|
|
|
|
OneMinusConstantColor = 0x62, |
|
|
|
|
|
ConstantAlpha = 0x63, |
|
|
|
|
|
OneMinusConstantAlpha = 0x64, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
u32 separate_alpha; |
|
|
|
|
|
Equation equation_rgb; |
|
|
|
|
|
Factor factor_source_rgb; |
|
|
|
|
|
Factor factor_dest_rgb; |
|
|
|
|
|
Equation equation_a; |
|
|
|
|
|
Factor factor_source_a; |
|
|
|
|
|
Factor factor_dest_a; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
union { |
|
|
union { |
|
|
struct { |
|
|
struct { |
|
|
INSERT_PADDING_WORDS(0x200); |
|
|
INSERT_PADDING_WORDS(0x200); |
|
|
@ -451,7 +494,9 @@ public: |
|
|
} |
|
|
} |
|
|
} vertex_array[NumVertexArrays]; |
|
|
} vertex_array[NumVertexArrays]; |
|
|
|
|
|
|
|
|
INSERT_PADDING_WORDS(0x40); |
|
|
|
|
|
|
|
|
Blend blend; |
|
|
|
|
|
|
|
|
|
|
|
INSERT_PADDING_WORDS(0x39); |
|
|
|
|
|
|
|
|
struct { |
|
|
struct { |
|
|
u32 limit_high; |
|
|
u32 limit_high; |
|
|
@ -616,6 +661,7 @@ ASSERT_REG_POSITION(draw, 0x585); |
|
|
ASSERT_REG_POSITION(index_array, 0x5F2); |
|
|
ASSERT_REG_POSITION(index_array, 0x5F2); |
|
|
ASSERT_REG_POSITION(query, 0x6C0); |
|
|
ASSERT_REG_POSITION(query, 0x6C0); |
|
|
ASSERT_REG_POSITION(vertex_array[0], 0x700); |
|
|
ASSERT_REG_POSITION(vertex_array[0], 0x700); |
|
|
|
|
|
ASSERT_REG_POSITION(blend, 0x780); |
|
|
ASSERT_REG_POSITION(vertex_array_limit[0], 0x7C0); |
|
|
ASSERT_REG_POSITION(vertex_array_limit[0], 0x7C0); |
|
|
ASSERT_REG_POSITION(shader_config[0], 0x800); |
|
|
ASSERT_REG_POSITION(shader_config[0], 0x800); |
|
|
ASSERT_REG_POSITION(const_buffer, 0x8E0); |
|
|
ASSERT_REG_POSITION(const_buffer, 0x8E0); |
|
|
|