From 9826d83439154a3a7120c9e9b83a59b5bcaccfbc Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 24 Feb 2006 16:51:33 +0000 Subject: [PATCH] Add missing GetSubData callback. Fill in various parts of the base gl_buffer_object struct as required from each of our callbacks. --- .../drivers/dri/i915/intel_buffer_objects.c | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i915/intel_buffer_objects.c b/src/mesa/drivers/dri/i915/intel_buffer_objects.c index a59211e961c..18d98371773 100644 --- a/src/mesa/drivers/dri/i915/intel_buffer_objects.c +++ b/src/mesa/drivers/dri/i915/intel_buffer_objects.c @@ -96,6 +96,10 @@ static void intel_bufferobj_data( GLcontext *ctx, * argument below) */ assert(intel_obj); + + obj->Size = size; + obj->Usage = usage; + bmBufferData(intel->bm, intel_obj->buffer, size, data, 0); } @@ -120,6 +124,22 @@ static void intel_bufferobj_subdata( GLcontext *ctx, +static void intel_bufferobj_get_subdata( GLcontext *ctx, + GLenum target, + GLintptrARB offset, + GLsizeiptrARB size, + GLvoid * data, + struct gl_buffer_object * obj ) +{ + struct intel_context *intel = intel_context(ctx); + struct intel_buffer_object *intel_obj = intel_buffer_object(obj); + + assert(intel_obj); + bmBufferGetSubData(intel->bm, intel_obj->buffer, offset, size, data); +} + + + static void *intel_bufferobj_map( GLcontext *ctx, GLenum target, @@ -132,7 +152,8 @@ static void *intel_bufferobj_map( GLcontext *ctx, /* XXX: Translate access to flags arg below: */ assert(intel_obj); - return bmMapBuffer(intel->bm, intel_obj->buffer, 0); + obj->Pointer = bmMapBuffer(intel->bm, intel_obj->buffer, 0); + return obj->Pointer; } @@ -144,7 +165,9 @@ static GLboolean intel_bufferobj_unmap( GLcontext *ctx, struct intel_buffer_object *intel_obj = intel_buffer_object(obj); assert(intel_obj); + assert(obj->Pointer); bmUnmapBuffer(intel->bm, intel_obj->buffer); + obj->Pointer = NULL; return GL_TRUE; } @@ -161,6 +184,7 @@ void intel_bufferobj_init( struct intel_context *intel ) ctx->Driver.DeleteBuffer = intel_bufferobj_free; ctx->Driver.BufferData = intel_bufferobj_data; ctx->Driver.BufferSubData = intel_bufferobj_subdata; + ctx->Driver.GetBufferSubData = intel_bufferobj_get_subdata; ctx->Driver.MapBuffer = intel_bufferobj_map; ctx->Driver.UnmapBuffer = intel_bufferobj_unmap; }