summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/samplerobj.c47
1 files changed, 28 insertions, 19 deletions
diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
index 74464410862..77496ed8499 100644
--- a/src/mesa/main/samplerobj.c
+++ b/src/mesa/main/samplerobj.c
@@ -326,25 +326,11 @@ _mesa_BindSampler(GLuint unit, GLuint sampler)
}
-void GLAPIENTRY
-_mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
+static ALWAYS_INLINE void
+bind_samplers(struct gl_context *ctx, GLuint first, GLsizei count,
+ const GLuint *samplers, bool no_error)
{
- GET_CURRENT_CONTEXT(ctx);
- GLint i;
-
- /* The ARB_multi_bind spec says:
- *
- * "An INVALID_OPERATION error is generated if <first> + <count> is
- * greater than the number of texture image units supported by
- * the implementation."
- */
- if (first + count > ctx->Const.MaxCombinedTextureImageUnits) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glBindSamplers(first=%u + count=%d > the value of "
- "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS=%u)",
- first, count, ctx->Const.MaxCombinedTextureImageUnits);
- return;
- }
+ GLsizei i;
FLUSH_VERTICES(ctx, 0);
@@ -388,7 +374,7 @@ _mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
* in <samplers> is not zero or the name of an existing
* sampler object (per binding)."
*/
- if (!sampObj) {
+ if (!no_error && !sampObj) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBindSamplers(samplers[%d]=%u is not zero or "
"the name of an existing sampler object)",
@@ -425,6 +411,29 @@ _mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
}
+void GLAPIENTRY
+_mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ /* The ARB_multi_bind spec says:
+ *
+ * "An INVALID_OPERATION error is generated if <first> + <count> is
+ * greater than the number of texture image units supported by
+ * the implementation."
+ */
+ if (first + count > ctx->Const.MaxCombinedTextureImageUnits) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glBindSamplers(first=%u + count=%d > the value of "
+ "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS=%u)",
+ first, count, ctx->Const.MaxCombinedTextureImageUnits);
+ return;
+ }
+
+ bind_samplers(ctx, first, count, samplers, false);
+}
+
+
/**
* Check if a coordinate wrap mode is legal.
* \return GL_TRUE if legal, GL_FALSE otherwise