summaryrefslogtreecommitdiffstats
path: root/src/mesa/pipe/xlib
diff options
context:
space:
mode:
authorMichel Dänzer <[email protected]>2007-12-07 12:30:35 +0100
committerMichel Dänzer <[email protected]>2007-12-07 12:30:35 +0100
commitb859cdf6f191b4d8b56537c8dc30082a7e2d94b3 (patch)
tree4bd3149cc81a2fb6434282a70b34361f94710cfd /src/mesa/pipe/xlib
parent987d59bb83e9e08192563e5f1b52949c5511053c (diff)
Eliminate struct pipe_region.
Directly use struct pipe_buffer_handle for storage and struct pipe_surface for (un)mapping.
Diffstat (limited to 'src/mesa/pipe/xlib')
-rw-r--r--src/mesa/pipe/xlib/xm_api.c2
-rw-r--r--src/mesa/pipe/xlib/xm_buffer.c9
-rw-r--r--src/mesa/pipe/xlib/xm_surface.c8
-rw-r--r--src/mesa/pipe/xlib/xm_winsys.c50
4 files changed, 12 insertions, 57 deletions
diff --git a/src/mesa/pipe/xlib/xm_api.c b/src/mesa/pipe/xlib/xm_api.c
index f87d72d0c8c..542b4aca49c 100644
--- a/src/mesa/pipe/xlib/xm_api.c
+++ b/src/mesa/pipe/xlib/xm_api.c
@@ -1512,7 +1512,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )
pipe->get_tile_rgba = xmesa_get_tile_rgba;
pipe->put_tile_rgba = xmesa_put_tile_rgba;
- c->st->haveFramebufferRegions = GL_FALSE;
+ c->st->haveFramebufferSurfaces = GL_FALSE;
/* special pipe->clear function */
pipe->clear = xmesa_clear;
diff --git a/src/mesa/pipe/xlib/xm_buffer.c b/src/mesa/pipe/xlib/xm_buffer.c
index 449e90184b8..6fc2f4ba630 100644
--- a/src/mesa/pipe/xlib/xm_buffer.c
+++ b/src/mesa/pipe/xlib/xm_buffer.c
@@ -269,9 +269,8 @@ static void
finish_surface_init(GLcontext *ctx, struct xmesa_renderbuffer *xrb)
{
struct pipe_context *pipe = ctx->st->pipe;
- if (!xrb->St.surface->region) {
- xrb->St.surface->region = pipe->winsys->region_alloc(pipe->winsys, 1,
- 0x0);
+ if (!xrb->St.surface->buffer) {
+ xrb->St.surface->buffer = pipe->winsys->buffer_create(pipe->winsys, 0x0);
}
}
@@ -301,7 +300,7 @@ xmesa_alloc_front_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
rb->Height = height;
rb->InternalFormat = internalFormat;
- if (!xrb->St.surface || !xrb->St.surface->region)
+ if (!xrb->St.surface || !xrb->St.surface->buffer)
finish_surface_init(ctx, xrb);
/* surface info */
@@ -363,7 +362,7 @@ xmesa_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
xrb->origin4 = NULL;
}
- if (!xrb->St.surface || !xrb->St.surface->region)
+ if (!xrb->St.surface || !xrb->St.surface->buffer)
finish_surface_init(ctx, xrb);
xrb->St.surface->width = width;
diff --git a/src/mesa/pipe/xlib/xm_surface.c b/src/mesa/pipe/xlib/xm_surface.c
index 58ca2e7fb3c..4a54b5c7e1a 100644
--- a/src/mesa/pipe/xlib/xm_surface.c
+++ b/src/mesa/pipe/xlib/xm_surface.c
@@ -665,12 +665,12 @@ xmesa_new_color_surface(struct pipe_winsys *winsys, GLuint pipeFormat)
xms->surface.refcount = 1;
xms->surface.winsys = winsys;
- /* Note, the region we allocate doesn't actually have any storage
+ /* Note, the buffer we allocate doesn't actually have any storage
* since we're drawing into an XImage or Pixmap.
- * The region's size will get set in the xmesa_alloc_front/back_storage()
+ * The surface's size will get set in the xmesa_alloc_front/back_storage()
* functions.
*/
- xms->surface.region = winsys->region_alloc(winsys, 1, 0x0);
+ xms->surface.buffer = winsys->buffer_create(winsys, 0x0);
return &xms->surface;
}
@@ -713,7 +713,7 @@ xmesa_clear(struct pipe_context *pipe, struct pipe_surface *ps, uint value)
{
struct softpipe_context *sp = softpipe_context(pipe);
- if (ps == sp_tile_cache_get_surface(sp->cbuf_cache[0])) {
+ if (ps == sp_tile_cache_get_surface(sp, sp->cbuf_cache[0])) {
float clear[4];
clear[0] = 0.2; /* XXX hack */
clear[1] = 0.2;
diff --git a/src/mesa/pipe/xlib/xm_winsys.c b/src/mesa/pipe/xlib/xm_winsys.c
index 99816a811d6..295174d4bba 100644
--- a/src/mesa/pipe/xlib/xm_winsys.c
+++ b/src/mesa/pipe/xlib/xm_winsys.c
@@ -186,7 +186,7 @@ xm_get_name(struct pipe_winsys *pws)
static struct pipe_buffer_handle *
-xm_buffer_create(struct pipe_winsys *pws, unsigned alignment)
+xm_buffer_create(struct pipe_winsys *pws, unsigned flags)
{
struct xm_buffer *buffer = CALLOC_STRUCT(xm_buffer);
buffer->refcount = 1;
@@ -228,47 +228,6 @@ xm_surface_pitch(struct pipe_winsys *winsys, unsigned cpp, unsigned width,
}
-static struct pipe_region *
-xm_region_alloc(struct pipe_winsys *winsys, unsigned size, unsigned flags)
-{
- struct pipe_region *region = CALLOC_STRUCT(pipe_region);
- const unsigned alignment = 64;
-
- region->refcount = 1;
-
- assert(size > 0);
-
- region->buffer = winsys->buffer_create( winsys, alignment );
-
- /* NULL data --> just allocate the space */
- winsys->buffer_data( winsys,
- region->buffer,
- size,
- NULL,
- PIPE_BUFFER_USAGE_PIXEL );
- return region;
-}
-
-
-static void
-xm_region_release(struct pipe_winsys *winsys, struct pipe_region **region)
-{
- if (!*region)
- return;
-
- assert((*region)->refcount > 0);
- (*region)->refcount--;
-
- if ((*region)->refcount == 0) {
- assert((*region)->map_refcount == 0);
-
- winsys->buffer_reference( winsys, &((*region)->buffer), NULL );
- free(*region);
- }
- *region = NULL;
-}
-
-
/**
* Called via pipe->surface_alloc() to create new surfaces (textures,
* renderbuffers, etc.
@@ -301,8 +260,8 @@ xm_surface_release(struct pipe_winsys *winsys, struct pipe_surface **s)
struct pipe_surface *surf = *s;
surf->refcount--;
if (surf->refcount == 0) {
- if (surf->region)
- winsys->region_release(winsys, &surf->region);
+ if (surf->buffer)
+ winsys->buffer_reference(winsys, &surf->buffer, NULL);
free(surf);
}
*s = NULL;
@@ -335,9 +294,6 @@ xmesa_get_pipe_winsys(void)
ws->buffer_subdata = xm_buffer_subdata;
ws->buffer_get_subdata = xm_buffer_get_subdata;
- ws->region_alloc = xm_region_alloc;
- ws->region_release = xm_region_release;
-
ws->surface_pitch = xm_surface_pitch;
ws->surface_alloc = xm_surface_alloc;
ws->surface_release = xm_surface_release;