[Mesa-dev] [PATCH] mesa: Set default access flags based on the run-time API
Brian Paul
brian.e.paul at gmail.com
Tue Jan 17 18:05:31 PST 2012
On Tue, Jan 17, 2012 at 5:29 PM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> The default access flags for OpenGL ES (via GL_OES_map_buffer) and
> desktop OpenGL are different. The code previously tried to handle
> this, but the decision was made at compile time. Since the same
> driver binary can be used for both OpenGL ES and desktop OpenGL, the
> decision must be made at run-time.
>
> This should fix bug #44433. It appears that the test case does
> various map and unmap operations and inspects the state of the buffer
> object around each. When it sees that GL_BUFFER_ACCESS does not match
> its expectations, it fails.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44433
> ---
> src/mesa/drivers/dri/intel/intel_buffer_objects.c | 2 +-
> src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c | 2 +-
> .../drivers/dri/radeon/radeon_buffer_objects.c | 2 +-
> src/mesa/main/bufferobj.c | 21 +++++++++----------
> src/mesa/main/bufferobj.h | 3 +-
> src/mesa/state_tracker/st_cb_bufferobjects.c | 2 +-
> 6 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/intel/intel_buffer_objects.c b/src/mesa/drivers/dri/intel/intel_buffer_objects.c
> index 03dd179..600f01c 100644
> --- a/src/mesa/drivers/dri/intel/intel_buffer_objects.c
> +++ b/src/mesa/drivers/dri/intel/intel_buffer_objects.c
> @@ -72,7 +72,7 @@ intel_bufferobj_alloc(struct gl_context * ctx, GLuint name, GLenum target)
> {
> struct intel_buffer_object *obj = CALLOC_STRUCT(intel_buffer_object);
>
> - _mesa_initialize_buffer_object(&obj->Base, name, target);
> + _mesa_initialize_buffer_object(ctx, &obj->Base, name, target);
>
> obj->buffer = NULL;
>
> diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c
> index dc5b152..f7ad895 100644
> --- a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c
> +++ b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c
> @@ -56,7 +56,7 @@ nouveau_bufferobj_new(struct gl_context *ctx, GLuint buffer, GLenum target)
> if (!nbo)
> return NULL;
>
> - _mesa_initialize_buffer_object(&nbo->base, buffer, target);
> + _mesa_initialize_buffer_object(ctx, &nbo->base, buffer, target);
>
> return &nbo->base;
> }
> diff --git a/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c b/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c
> index 7b59c03..5abc52b 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c
> @@ -46,7 +46,7 @@ radeonNewBufferObject(struct gl_context * ctx,
> {
> struct radeon_buffer_object *obj = CALLOC_STRUCT(radeon_buffer_object);
>
> - _mesa_initialize_buffer_object(&obj->Base, name, target);
> + _mesa_initialize_buffer_object(ctx, &obj->Base, name, target);
>
> obj->bo = NULL;
>
> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
> index 5f8071f..6ac2092 100644
> --- a/src/mesa/main/bufferobj.c
> +++ b/src/mesa/main/bufferobj.c
> @@ -49,11 +49,9 @@
> /*#define BOUNDS_CHECK*/
>
>
> -#if FEATURE_OES_mapbuffer
> -#define DEFAULT_ACCESS GL_MAP_WRITE_BIT
> -#else
> -#define DEFAULT_ACCESS (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT)
> -#endif
> +#define DEFAULT_ACCESS(ctx) \
> + (ctx->API == API_OPENGLES) \
> + ? GL_MAP_WRITE_BIT : (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT);
How about changing the macro to an inline function?
-Brian
More information about the mesa-dev
mailing list