summaryrefslogtreecommitdiffstats
path: root/src/mesa/pipe/softpipe/sp_context.c
diff options
context:
space:
mode:
authorBrian <[email protected]>2007-07-31 17:42:03 -0600
committerBrian <[email protected]>2007-07-31 17:42:03 -0600
commit20adf45c23dd9ec86a1439ad87c1473395bbb1a7 (patch)
treeeee17a4b7b1572651c2b20661b26b82def9cdd34 /src/mesa/pipe/softpipe/sp_context.c
parent2f245bce420c7a6c6928c4927d0f9a5701cde17f (diff)
Redesign pipe_surface in terms of pipe_region.
struct pipe_buffer goes away. Added basic region functions to softpipe to allocate/release malloc'd regions. Surface-related code is fairly coherent now.
Diffstat (limited to 'src/mesa/pipe/softpipe/sp_context.c')
-rw-r--r--src/mesa/pipe/softpipe/sp_context.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mesa/pipe/softpipe/sp_context.c b/src/mesa/pipe/softpipe/sp_context.c
index 8655aa83fd4..002fe73b59d 100644
--- a/src/mesa/pipe/softpipe/sp_context.c
+++ b/src/mesa/pipe/softpipe/sp_context.c
@@ -35,6 +35,7 @@
#include "pipe/p_defines.h"
#include "sp_context.h"
#include "sp_clear.h"
+#include "sp_region.h"
#include "sp_state.h"
#include "sp_surface.h"
#include "sp_prim_setup.h"
@@ -42,18 +43,16 @@
static void map_surfaces(struct softpipe_context *sp)
{
+ struct pipe_context *pipe = &sp->pipe;
GLuint i;
for (i = 0; i < sp->framebuffer.num_cbufs; i++) {
- struct softpipe_surface *sps = softpipe_surface(sp->framebuffer.cbufs[i]);
- struct pipe_buffer *buf = &sps->surface.buffer;
- buf->map(buf, PIPE_MAP_READ_WRITE);
+ struct softpipe_surface *sps = softpipe_surface(sp->framebuffer.cbufs[i]); pipe->region_map(pipe, sps->surface.region);
}
if (sp->framebuffer.zbuf) {
struct softpipe_surface *sps = softpipe_surface(sp->framebuffer.zbuf);
- struct pipe_buffer *buf = &sps->surface.buffer;
- buf->map(buf, PIPE_MAP_READ_WRITE);
+ pipe->region_map(pipe, sps->surface.region);
}
/* XXX depth & stencil bufs */
@@ -62,18 +61,17 @@ static void map_surfaces(struct softpipe_context *sp)
static void unmap_surfaces(struct softpipe_context *sp)
{
+ struct pipe_context *pipe = &sp->pipe;
GLuint i;
for (i = 0; i < sp->framebuffer.num_cbufs; i++) {
struct softpipe_surface *sps = softpipe_surface(sp->framebuffer.cbufs[i]);
- struct pipe_buffer *buf = &sps->surface.buffer;
- buf->unmap(buf);
+ pipe->region_unmap(pipe, sps->surface.region);
}
if (sp->framebuffer.zbuf) {
struct softpipe_surface *sps = softpipe_surface(sp->framebuffer.zbuf);
- struct pipe_buffer *buf = &sps->surface.buffer;
- buf->unmap(buf);
+ pipe->region_unmap(pipe, sps->surface.region);
}
/* XXX depth & stencil bufs */
}
@@ -161,6 +159,9 @@ struct pipe_context *softpipe_create( void )
softpipe->draw = draw_create();
draw_set_setup_stage(softpipe->draw, sp_draw_render_stage(softpipe));
+ sp_init_region_functions(softpipe);
+ sp_init_surface_functions(softpipe);
+
/*
* XXX we could plug GL selection/feedback into the drawing pipeline
* by specifying a different setup/render stage.