Browse Source

GL: skip also dispatchCompute() if count is zero in any dimension.

To be consistent with what draw() does.
pull/610/head
Vladimír Vondruš 4 years ago
parent
commit
f4b9b10404
  1. 3
      src/Magnum/GL/AbstractShaderProgram.cpp
  2. 4
      src/Magnum/GL/AbstractShaderProgram.h

3
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;

4
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

Loading…
Cancel
Save