Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/gpu/intern/gpu_context_private.hh6
-rw-r--r--source/blender/gpu/intern/gpu_state.cc4
-rw-r--r--source/blender/gpu/opengl/gl_context.cc16
-rw-r--r--source/blender/gpu/opengl/gl_context.hh4
4 files changed, 28 insertions, 2 deletions
diff --git a/source/blender/gpu/intern/gpu_context_private.hh b/source/blender/gpu/intern/gpu_context_private.hh
index 3d92b4eb587..5344cc6fb87 100644
--- a/source/blender/gpu/intern/gpu_context_private.hh
+++ b/source/blender/gpu/intern/gpu_context_private.hh
@@ -76,6 +76,12 @@ struct GPUContext {
virtual void activate(void) = 0;
virtual void deactivate(void) = 0;
+
+ /* Will push all pending commands to the GPU. */
+ virtual void flush(void) = 0;
+ /* Will wait until the GPU has finished executing all command. */
+ virtual void finish(void) = 0;
+
virtual void memory_statistics_get(int *total_mem, int *free_mem) = 0;
bool is_active_on_thread(void);
diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc
index 90c6efad2e8..a88dc1beb00 100644
--- a/source/blender/gpu/intern/gpu_state.cc
+++ b/source/blender/gpu/intern/gpu_state.cc
@@ -295,12 +295,12 @@ bool GPU_mipmap_enabled(void)
void GPU_flush(void)
{
- glFlush();
+ GPU_context_active_get()->flush();
}
void GPU_finish(void)
{
- glFinish();
+ GPU_context_active_get()->finish();
}
void GPU_unpack_row_length_set(uint len)
diff --git a/source/blender/gpu/opengl/gl_context.cc b/source/blender/gpu/opengl/gl_context.cc
index 5633d28023a..1f7e191d394 100644
--- a/source/blender/gpu/opengl/gl_context.cc
+++ b/source/blender/gpu/opengl/gl_context.cc
@@ -161,6 +161,22 @@ void GLContext::deactivate(void)
/** \} */
/* -------------------------------------------------------------------- */
+/** \name Flush, Finish & sync
+ * \{ */
+
+void GLContext::flush(void)
+{
+ glFlush();
+}
+
+void GLContext::finish(void)
+{
+ glFinish();
+}
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
/** \name Safe object deletion
*
* GPU objects can be freed when the context is not bound.
diff --git a/source/blender/gpu/opengl/gl_context.hh b/source/blender/gpu/opengl/gl_context.hh
index 8bce0d2e345..ef0c13719e2 100644
--- a/source/blender/gpu/opengl/gl_context.hh
+++ b/source/blender/gpu/opengl/gl_context.hh
@@ -97,6 +97,10 @@ class GLContext : public GPUContext {
void activate(void) override;
void deactivate(void) override;
+
+ void flush(void);
+ void finish(void);
+
void memory_statistics_get(int *total_mem, int *free_mem) override;
static inline GLStateManager *state_manager_active_get()