mesa: call ctx->Driver.TexParameter() in texture_buffer_range()
authorBrian Paul <brianp@vmware.com>
Mon, 3 Oct 2016 15:40:56 +0000 (09:40 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 6 Oct 2016 17:29:32 +0000 (11:29 -0600)
To inform drivers of texture buffer offset/size changes, as we do for
other texture object parameters.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/main/teximage.c

index df8f0bcd4548abd5cd821de6b694f333ef8ce9f0..411ec49efd1b3214dd13b4ff44d8e4f96faed3fb 100644 (file)
@@ -5046,6 +5046,8 @@ texture_buffer_range(struct gl_context *ctx,
                      GLintptr offset, GLsizeiptr size,
                      const char *caller)
 {
+   GLintptr oldOffset = texObj->BufferOffset;
+   GLsizeiptr oldSize = texObj->BufferSize;
    mesa_format format;
 
    /* NOTE: ARB_texture_buffer_object has interactions with
@@ -5078,6 +5080,17 @@ texture_buffer_range(struct gl_context *ctx,
    }
    _mesa_unlock_texture(ctx, texObj);
 
+   if (ctx->Driver.TexParameter) {
+      if (offset != oldOffset) {
+         ctx->Driver.TexParameter(ctx, texObj, GL_TEXTURE_BUFFER_OFFSET,
+                                  (const GLfloat *) &offset);
+      }
+      if (size != oldSize) {
+         ctx->Driver.TexParameter(ctx, texObj, GL_TEXTURE_BUFFER_SIZE,
+                                  (const GLfloat *) &size);
+      }
+   }
+
    ctx->NewDriverState |= ctx->DriverFlags.NewTextureBuffer;
 
    if (bufObj) {