gallium: Create OGL state tracker wrappers for various CPU access operations.
authorThomas Hellstrom <thellstrom-at-vmware-dot-com>
Fri, 17 Apr 2009 09:47:30 +0000 (11:47 +0200)
committerThomas Hellstrom <thellstrom-at-vmware-dot-com>
Fri, 17 Apr 2009 11:18:05 +0000 (13:18 +0200)
commite50dd26ca6d0eb0d0f97c2780020ea16e3d4a687
tree9f5e533b888576b93fa3d0873d568c81baeed4d8
parentee2a5f307a026c1c258d3f7616d46cc7230d77ce
gallium: Create OGL state tracker wrappers for various CPU access operations.

There are two usage types of buffer CPU accesses:
One where we try to use the buffer contents for multiple draw commands in
a batch. (batch := sequence of commands that are flushed together),
like incrementally adding bitmaps to a bitmap texture that is reallocated
on flush.
And one where we assume we can safely overwrite the old buffer contexts, like
glTexSubImage. In this case we need to make sure all old drawing commands
referencing the buffer are flushed before we map the buffer.
This is easily forgotten.

Add wrappers for the most common of these operations. The first type is
prefixed with "st_no_flush" and the second type is prefixed with
"st_cond_flush", where "cond" indicates that we attmpt to only flush
if there is indeed unflushed draw commands referencing the buffer.

Prefixed functions are
screen::get_tex_transfer
pipe_buffer_write
pipe_buffer_read
pipe_buffer_map

Please use the wrappers whenever possible.

Signed-off-by: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
13 files changed:
src/mesa/state_tracker/st_atom_constbuf.c
src/mesa/state_tracker/st_atom_pixeltransfer.c
src/mesa/state_tracker/st_cb_accum.c
src/mesa/state_tracker/st_cb_bitmap.c
src/mesa/state_tracker/st_cb_bufferobjects.c
src/mesa/state_tracker/st_cb_clear.c
src/mesa/state_tracker/st_cb_drawpixels.c
src/mesa/state_tracker/st_cb_readpixels.c
src/mesa/state_tracker/st_cb_texture.c
src/mesa/state_tracker/st_gen_mipmap.c
src/mesa/state_tracker/st_inlines.h [new file with mode: 0644]
src/mesa/state_tracker/st_texture.c
src/mesa/state_tracker/st_texture.h