diff --git a/src/Magnum/GL/AbstractShaderProgram.cpp b/src/Magnum/GL/AbstractShaderProgram.cpp index 5e9054d30..b4df952a1 100644 --- a/src/Magnum/GL/AbstractShaderProgram.cpp +++ b/src/Magnum/GL/AbstractShaderProgram.cpp @@ -519,6 +519,9 @@ AbstractShaderProgram& AbstractShaderProgram::drawTransformFeedback(MeshView& me #if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL) AbstractShaderProgram& AbstractShaderProgram::dispatchCompute(const Vector3ui& workgroupCount) { + /* Nothing to dispatch, exit without touching any state */ + if(!workgroupCount.product()) return *this; + use(); glDispatchCompute(workgroupCount.x(), workgroupCount.y(), workgroupCount.z()); return *this; diff --git a/src/Magnum/GL/AbstractShaderProgram.h b/src/Magnum/GL/AbstractShaderProgram.h index 177cb3385..94607c76d 100644 --- a/src/Magnum/GL/AbstractShaderProgram.h +++ b/src/Magnum/GL/AbstractShaderProgram.h @@ -1322,7 +1322,9 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * @param workgroupCount Workgroup count in given dimension * @return Reference to self (for method chaining) * - * Valid only on programs with compute shader attached. + * Valid only on programs with compute shader attached. If + * @p workgroupCount is @cpp 0 @ce in any dimension, no compute + * dispatch commands are issued. * @see @fn_gl{DispatchCompute} * @requires_gl43 Extension @gl_extension{ARB,compute_shader} * @requires_gles31 Compute shaders are not available in OpenGL ES 3.0