[Mesa-dev] [PATCH 4/6] mesa: call ctx->Driver.TexParameter() in texture_buffer_range()
Ian Romanick
idr at freedesktop.org
Fri Oct 7 18:43:51 UTC 2016
On 10/05/2016 05:42 PM, Brian Paul wrote:
> To inform drivers of texture buffer offset/size changes, as we do for
> other texture object parameters.
> ---
> src/mesa/main/teximage.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index df8f0bc..411ec49 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -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);
This always feels icky to me. Casting pointers in this way can only
lead to sadness. Also, none of the driver implementations of
TexParameter (see src/mesa/drivers/dri/r200/r200_tex.c,
src/mesa/drivers/dri/radeon/radeon_tex.c,
src/mesa/drivers/dri/nouveau/nouveau_state.c, and
src/mesa/state_tracker/st_cb_texture.c) use params. Maybe we could just
remove that parameter?
> + }
> + if (size != oldSize) {
> + ctx->Driver.TexParameter(ctx, texObj, GL_TEXTURE_BUFFER_SIZE,
> + (const GLfloat *) &size);
> + }
> + }
> +
> ctx->NewDriverState |= ctx->DriverFlags.NewTextureBuffer;
>
> if (bufObj) {
>
More information about the mesa-dev
mailing list