gl_state: Remove logic op tracker
This commit is contained in:
parent
915d73f3b8
commit
42708c762e
4 changed files with 5 additions and 24 deletions
|
@ -1156,15 +1156,10 @@ void RasterizerOpenGL::SyncBlendState() {
|
||||||
void RasterizerOpenGL::SyncLogicOpState() {
|
void RasterizerOpenGL::SyncLogicOpState() {
|
||||||
const auto& regs = system.GPU().Maxwell3D().regs;
|
const auto& regs = system.GPU().Maxwell3D().regs;
|
||||||
|
|
||||||
state.logic_op.enabled = regs.logic_op.enable != 0;
|
oglEnable(GL_COLOR_LOGIC_OP, regs.logic_op.enable);
|
||||||
|
if (regs.logic_op.enable) {
|
||||||
if (!state.logic_op.enabled)
|
glLogicOp(MaxwellToGL::LogicOp(regs.logic_op.operation));
|
||||||
return;
|
}
|
||||||
|
|
||||||
ASSERT_MSG(regs.blend.enable[0] == 0,
|
|
||||||
"Blending and logic op can't be enabled at the same time.");
|
|
||||||
|
|
||||||
state.logic_op.operation = MaxwellToGL::LogicOp(regs.logic_op.operation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerOpenGL::SyncScissorTest(OpenGLState& current_state) {
|
void RasterizerOpenGL::SyncScissorTest(OpenGLState& current_state) {
|
||||||
|
|
|
@ -332,14 +332,6 @@ void OpenGLState::ApplyBlending() {
|
||||||
cur_state.independant_blend.enabled = independant_blend.enabled;
|
cur_state.independant_blend.enabled = independant_blend.enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLState::ApplyLogicOp() {
|
|
||||||
Enable(GL_COLOR_LOGIC_OP, cur_state.logic_op.enabled, logic_op.enabled);
|
|
||||||
|
|
||||||
if (UpdateValue(cur_state.logic_op.operation, logic_op.operation)) {
|
|
||||||
glLogicOp(logic_op.operation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGLState::ApplyClipControl() {
|
void OpenGLState::ApplyClipControl() {
|
||||||
if (UpdateTie(std::tie(cur_state.clip_control.origin, cur_state.clip_control.depth_mode),
|
if (UpdateTie(std::tie(cur_state.clip_control.origin, cur_state.clip_control.depth_mode),
|
||||||
std::tie(clip_control.origin, clip_control.depth_mode))) {
|
std::tie(clip_control.origin, clip_control.depth_mode))) {
|
||||||
|
@ -400,7 +392,6 @@ void OpenGLState::Apply() {
|
||||||
ApplyDepth();
|
ApplyDepth();
|
||||||
ApplyPrimitiveRestart();
|
ApplyPrimitiveRestart();
|
||||||
ApplyBlending();
|
ApplyBlending();
|
||||||
ApplyLogicOp();
|
|
||||||
ApplyTextures();
|
ApplyTextures();
|
||||||
ApplySamplers();
|
ApplySamplers();
|
||||||
ApplyImages();
|
ApplyImages();
|
||||||
|
|
|
@ -81,11 +81,6 @@ public:
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
} independant_blend;
|
} independant_blend;
|
||||||
|
|
||||||
struct {
|
|
||||||
bool enabled = false; // GL_LOGIC_OP_MODE
|
|
||||||
GLenum operation = GL_COPY;
|
|
||||||
} logic_op;
|
|
||||||
|
|
||||||
static constexpr std::size_t NumSamplers = 32 * 5;
|
static constexpr std::size_t NumSamplers = 32 * 5;
|
||||||
static constexpr std::size_t NumImages = 8 * 5;
|
static constexpr std::size_t NumImages = 8 * 5;
|
||||||
std::array<GLuint, NumSamplers> textures = {};
|
std::array<GLuint, NumSamplers> textures = {};
|
||||||
|
@ -154,7 +149,6 @@ public:
|
||||||
void ApplyTargetBlending(std::size_t target, bool force);
|
void ApplyTargetBlending(std::size_t target, bool force);
|
||||||
void ApplyGlobalBlending();
|
void ApplyGlobalBlending();
|
||||||
void ApplyBlending();
|
void ApplyBlending();
|
||||||
void ApplyLogicOp();
|
|
||||||
void ApplyTextures();
|
void ApplyTextures();
|
||||||
void ApplySamplers();
|
void ApplySamplers();
|
||||||
void ApplyImages();
|
void ApplyImages();
|
||||||
|
|
|
@ -574,6 +574,7 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x,
|
||||||
|
|
||||||
// TODO: Signal state tracker about these changes
|
// TODO: Signal state tracker about these changes
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
|
glDisable(GL_COLOR_LOGIC_OP);
|
||||||
glDisable(GL_ALPHA_TEST);
|
glDisable(GL_ALPHA_TEST);
|
||||||
glDisable(GL_POLYGON_OFFSET_FILL);
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
glCullFace(GL_BACK);
|
glCullFace(GL_BACK);
|
||||||
|
|
Loading…
Reference in a new issue