[Mesa-dev] [PATCH 09/12] radeon: Hack up an implementation of MapBufferRange
Alex Deucher
alexdeucher at gmail.com
Mon Aug 22 08:59:12 PDT 2011
On Mon, Aug 22, 2011 at 3:33 AM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> This doesn't implement any of the "cool" features of MapBufferRange.
> Adding this function is necessary for the next commit in the series.
>
Looks ok to me.
Reviewed-by: Alex Deucher <alexdeucher at gmail.com>
> Cc: Maciej Cencora <m.cencora at gmail.com>
> Cc: Alex Deucher <alexdeucher at gmail.com>
> ---
> .../drivers/dri/radeon/radeon_buffer_objects.c | 33 ++++++++++++++++++++
> 1 files changed, 33 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c b/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c
> index ee63436..e106d98 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c
> @@ -198,6 +198,38 @@ radeonMapBuffer(struct gl_context * ctx,
>
>
> /**
> + * Called via glMapBufferRange()
> + */
> +static void *
> +radeonMapBufferRange(struct gl_context * ctx,
> + GLintptr offset, GLsizeiptr length,
> + GLbitfield access, struct gl_buffer_object *obj)
> +{
> + struct radeon_buffer_object *radeon_obj = get_radeon_buffer_object(obj);
> + const GLboolean write_only =
> + (access & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT)) == GL_MAP_WRITE_BIT;
> +
> + if (write_only) {
> + ctx->Driver.Flush(ctx);
> + }
> +
> + if (radeon_obj->bo == NULL) {
> + obj->Pointer = NULL;
> + return NULL;
> + }
> +
> + obj->Offset = offset;
> + obj->Length = length;
> + obj->AccessFlags = access;
> +
> + radeon_bo_map(radeon_obj->bo, write_only);
> +
> + obj->Pointer = radeon_obj->bo->ptr + offset;
> + return obj->Pointer;
> +}
> +
> +
> +/**
> * Called via glUnmapBufferARB()
> */
> static GLboolean
> @@ -226,5 +258,6 @@ radeonInitBufferObjectFuncs(struct dd_function_table *functions)
> functions->BufferSubData = radeonBufferSubData;
> functions->GetBufferSubData = radeonGetBufferSubData;
> functions->MapBuffer = radeonMapBuffer;
> + functions->MapBufferRange = radeonMapBufferRange;
> functions->UnmapBuffer = radeonUnmapBuffer;
> }
> --
> 1.7.4.4
>
>
More information about the mesa-dev
mailing list