summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index b0eb14c8b..8d132732a 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -547,6 +547,9 @@ void RasterizerOpenGL::Draw(bool is_indexed, bool is_instanced) {
MICROPROFILE_SCOPE(OpenGL_Drawing);
auto& gpu = system.GPU().Maxwell3D();
+ const auto& regs = gpu.regs;
+ samples_passed.UpdateState(regs.samplecnt_enable);
+
SyncRasterizeEnable(state);
SyncColorMask();
SyncFragmentColorClampState();
@@ -709,6 +712,27 @@ void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) {
glDispatchCompute(launch_desc.grid_dim_x, launch_desc.grid_dim_y, launch_desc.grid_dim_z);
}
+void RasterizerOpenGL::ResetCounter(VideoCore::QueryType type) {
+ switch (type) {
+ case VideoCore::QueryType::SamplesPassed:
+ samples_passed.Reset();
+ break;
+ default:
+ UNIMPLEMENTED_MSG("type={}", static_cast<u32>(type));
+ break;
+ }
+}
+
+u64 RasterizerOpenGL::Query(VideoCore::QueryType type) {
+ switch (type) {
+ case VideoCore::QueryType::SamplesPassed:
+ return samples_passed.Query();
+ default:
+ UNIMPLEMENTED_MSG("type={}", static_cast<u32>(type));
+ return 1;
+ }
+}
+
void RasterizerOpenGL::FlushAll() {}
void RasterizerOpenGL::FlushRegion(CacheAddr addr, u64 size) {