diff options
-rw-r--r-- | source/blender/gpu/opengl/gl_shader.hh | 5 | ||||
-rw-r--r-- | source/blender/gpu/opengl/gl_texture.cc | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/gpu/opengl/gl_shader.hh b/source/blender/gpu/opengl/gl_shader.hh index 86281d231a8..9c21d0c6230 100644 --- a/source/blender/gpu/opengl/gl_shader.hh +++ b/source/blender/gpu/opengl/gl_shader.hh @@ -72,6 +72,11 @@ class GLShader : public Shader { /** DEPRECATED: Kept only because of BGL API. */ int program_handle_get() const override; + bool is_compute() const + { + return compute_shader_ != 0; + } + private: char *glsl_patch_get(GLenum gl_stage); diff --git a/source/blender/gpu/opengl/gl_texture.cc b/source/blender/gpu/opengl/gl_texture.cc index 0a5c7f8e79e..9d070088802 100644 --- a/source/blender/gpu/opengl/gl_texture.cc +++ b/source/blender/gpu/opengl/gl_texture.cc @@ -688,6 +688,11 @@ void GLTexture::check_feedback_loop() if (GPU_mip_render_workaround()) { return; } + /* Do not check if using compute shader. */ + GLShader *sh = dynamic_cast<GLShader *>(Context::get()->shader); + if (sh && sh->is_compute()) { + return; + } GLFrameBuffer *fb = static_cast<GLFrameBuffer *>(GLContext::get()->active_fb); for (int i = 0; i < ARRAY_SIZE(fb_); i++) { if (fb_[i] == fb) { |