GPU: Added registers for normal and independent blending.
This commit is contained in:
parent
a931cf9e8b
commit
c712dafaee
2 changed files with 27 additions and 31 deletions
|
@ -318,6 +318,7 @@ public:
|
||||||
Equation equation_a;
|
Equation equation_a;
|
||||||
Factor factor_source_a;
|
Factor factor_source_a;
|
||||||
Factor factor_dest_a;
|
Factor factor_dest_a;
|
||||||
|
INSERT_PADDING_WORDS(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
union {
|
union {
|
||||||
|
@ -432,7 +433,27 @@ public:
|
||||||
};
|
};
|
||||||
} rt_control;
|
} rt_control;
|
||||||
|
|
||||||
INSERT_PADDING_WORDS(0xCF);
|
INSERT_PADDING_WORDS(0x31);
|
||||||
|
|
||||||
|
u32 independent_blend_enable;
|
||||||
|
|
||||||
|
INSERT_PADDING_WORDS(0x15);
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u32 separate_alpha;
|
||||||
|
Blend::Equation equation_rgb;
|
||||||
|
Blend::Factor factor_source_rgb;
|
||||||
|
Blend::Factor factor_dest_rgb;
|
||||||
|
Blend::Equation equation_a;
|
||||||
|
Blend::Factor factor_source_a;
|
||||||
|
INSERT_PADDING_WORDS(1);
|
||||||
|
Blend::Factor factor_dest_a;
|
||||||
|
|
||||||
|
u32 enable_common;
|
||||||
|
u32 enable[NumRenderTargets];
|
||||||
|
} blend;
|
||||||
|
|
||||||
|
INSERT_PADDING_WORDS(0x77);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u32 tsc_address_high;
|
u32 tsc_address_high;
|
||||||
|
@ -557,9 +578,7 @@ public:
|
||||||
|
|
||||||
} vertex_array[NumVertexArrays];
|
} vertex_array[NumVertexArrays];
|
||||||
|
|
||||||
Blend blend;
|
Blend independent_blend[NumRenderTargets];
|
||||||
|
|
||||||
INSERT_PADDING_WORDS(0x39);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u32 limit_high;
|
u32 limit_high;
|
||||||
|
@ -722,6 +741,8 @@ ASSERT_REG_POSITION(vertex_buffer, 0x35D);
|
||||||
ASSERT_REG_POSITION(zeta, 0x3F8);
|
ASSERT_REG_POSITION(zeta, 0x3F8);
|
||||||
ASSERT_REG_POSITION(vertex_attrib_format[0], 0x458);
|
ASSERT_REG_POSITION(vertex_attrib_format[0], 0x458);
|
||||||
ASSERT_REG_POSITION(rt_control, 0x487);
|
ASSERT_REG_POSITION(rt_control, 0x487);
|
||||||
|
ASSERT_REG_POSITION(independent_blend_enable, 0x4B9);
|
||||||
|
ASSERT_REG_POSITION(blend, 0x4CF);
|
||||||
ASSERT_REG_POSITION(tsc, 0x557);
|
ASSERT_REG_POSITION(tsc, 0x557);
|
||||||
ASSERT_REG_POSITION(tic, 0x55D);
|
ASSERT_REG_POSITION(tic, 0x55D);
|
||||||
ASSERT_REG_POSITION(code_address, 0x582);
|
ASSERT_REG_POSITION(code_address, 0x582);
|
||||||
|
@ -729,7 +750,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(independent_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);
|
||||||
|
|
|
@ -455,32 +455,7 @@ void RasterizerOpenGL::DrawArrays() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerOpenGL::NotifyMaxwellRegisterChanged(u32 method) {
|
void RasterizerOpenGL::NotifyMaxwellRegisterChanged(u32 method) {}
|
||||||
const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;
|
|
||||||
switch (method) {
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.separate_alpha):
|
|
||||||
ASSERT_MSG(false, "unimplemented");
|
|
||||||
break;
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.equation_rgb):
|
|
||||||
state.blend.rgb_equation = MaxwellToGL::BlendEquation(regs.blend.equation_rgb);
|
|
||||||
break;
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.factor_source_rgb):
|
|
||||||
state.blend.src_rgb_func = MaxwellToGL::BlendFunc(regs.blend.factor_source_rgb);
|
|
||||||
break;
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.factor_dest_rgb):
|
|
||||||
state.blend.dst_rgb_func = MaxwellToGL::BlendFunc(regs.blend.factor_dest_rgb);
|
|
||||||
break;
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.equation_a):
|
|
||||||
state.blend.a_equation = MaxwellToGL::BlendEquation(regs.blend.equation_a);
|
|
||||||
break;
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.factor_source_a):
|
|
||||||
state.blend.src_a_func = MaxwellToGL::BlendFunc(regs.blend.factor_source_a);
|
|
||||||
break;
|
|
||||||
case MAXWELL3D_REG_INDEX(blend.factor_dest_a):
|
|
||||||
state.blend.dst_a_func = MaxwellToGL::BlendFunc(regs.blend.factor_dest_a);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RasterizerOpenGL::FlushAll() {
|
void RasterizerOpenGL::FlushAll() {
|
||||||
MICROPROFILE_SCOPE(OpenGL_CacheManagement);
|
MICROPROFILE_SCOPE(OpenGL_CacheManagement);
|
||||||
|
|
Loading…
Reference in a new issue