summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_resource_manager.h
diff options
context:
space:
mode:
authorAmeer J <52414509+ameerj@users.noreply.github.com>2023-12-19 22:25:08 +0100
committerAmeer J <52414509+ameerj@users.noreply.github.com>2023-12-20 01:54:57 +0100
commitbbc0ed118df7f64522e198307a6d28607b23d4be (patch)
tree2dfd7ecaec445de037ec0af719d12991b88379fd /src/video_core/renderer_opengl/gl_resource_manager.h
parentMerge pull request #12411 from ameerj/gl-nv-tfb-fixups (diff)
downloadyuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.tar
yuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.tar.gz
yuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.tar.bz2
yuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.tar.lz
yuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.tar.xz
yuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.tar.zst
yuzu-bbc0ed118df7f64522e198307a6d28607b23d4be.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_resource_manager.h')
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_resource_manager.h b/src/video_core/renderer_opengl/gl_resource_manager.h
index 77362acd2..6ca8227bd 100644
--- a/src/video_core/renderer_opengl/gl_resource_manager.h
+++ b/src/video_core/renderer_opengl/gl_resource_manager.h
@@ -323,4 +323,31 @@ public:
GLuint handle = 0;
};
+class OGLTransformFeedback final {
+public:
+ YUZU_NON_COPYABLE(OGLTransformFeedback);
+
+ OGLTransformFeedback() = default;
+
+ OGLTransformFeedback(OGLTransformFeedback&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
+
+ ~OGLTransformFeedback() {
+ Release();
+ }
+
+ OGLTransformFeedback& operator=(OGLTransformFeedback&& o) noexcept {
+ Release();
+ handle = std::exchange(o.handle, 0);
+ return *this;
+ }
+
+ /// Creates a new internal OpenGL resource and stores the handle
+ void Create();
+
+ /// Deletes the internal OpenGL resource
+ void Release();
+
+ GLuint handle = 0;
+};
+
} // namespace OpenGL