Browse Source

gl_state_tracker: Implement dirty flags for multisample

nce_cpp
ReinUsesLisp 6 years ago
parent
commit
ec5b0560cb
  1. 7
      src/video_core/renderer_opengl/gl_rasterizer.cpp
  2. 5
      src/video_core/renderer_opengl/gl_state_tracker.cpp
  3. 1
      src/video_core/renderer_opengl/gl_state_tracker.h

7
src/video_core/renderer_opengl/gl_rasterizer.cpp

@ -1130,6 +1130,13 @@ void RasterizerOpenGL::SyncColorMask() {
}
void RasterizerOpenGL::SyncMultiSampleState() {
auto& gpu = system.GPU().Maxwell3D();
auto& flags = gpu.dirty.flags;
if (!flags[Dirty::MultisampleControl]) {
return;
}
flags[Dirty::MultisampleControl] = false;
const auto& regs = system.GPU().Maxwell3D().regs;
oglEnable(GL_SAMPLE_ALPHA_TO_COVERAGE, regs.multisample_control.alpha_to_coverage);
oglEnable(GL_SAMPLE_ALPHA_TO_ONE, regs.multisample_control.alpha_to_one);

5
src/video_core/renderer_opengl/gl_state_tracker.cpp

@ -185,6 +185,10 @@ void SetupDirtyPolygonOffset(Tables& tables) {
table[OFF(polygon_offset_clamp)] = PolygonOffset;
}
void SetupDirtyMultisampleControl(Tables& tables) {
FillBlock(tables[0], OFF(multisample_control), NUM(multisample_control), MultisampleControl);
}
void SetupDirtyMisc(Tables& tables) {
auto& table = tables[0];
@ -216,6 +220,7 @@ void StateTracker::Initialize() {
SetupDirtyBlend(tables);
SetupDirtyPrimitiveRestart(tables);
SetupDirtyPolygonOffset(tables);
SetupDirtyMultisampleControl(tables);
SetupDirtyMisc(tables);
auto& store = dirty.on_write_stores;

1
src/video_core/renderer_opengl/gl_state_tracker.h

@ -65,6 +65,7 @@ enum : u8 {
AlphaTest,
PrimitiveRestart,
PolygonOffset,
MultisampleControl,
Last
};

Loading…
Cancel
Save