summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cb_readpixels.c
AgeCommit message (Collapse)Author
2009-09-03mesa: consolidate PBO map/unmap helpersBrian Paul
Instead of _mesa_map_readpix_pbo() use _mesa_map_pbo_source(). Instead of _mesa_map_drawpix_pbo() and _mesa_map_bitmap_pbo() use _mesa_map_pbo_dest().
2009-06-10mesa: Reverse s8z24 into z24s8 as required by EXT_packed_depth_stencil.José Fonseca
Actually, after spotting this problem, I realized this is unreachable code. However don't bother to enable this fast path now, given the normal path is working just fine.
2009-06-10mesa: Single precision constants.José Fonseca
2009-04-22gallium: Reinstate unconditional flushes.Thomas Hellstrom
Lost in commit e50dd26ca6d0eb0d0f97c2780020ea16e3d4a687. Signed-off-by: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
2009-04-17gallium: Create OGL state tracker wrappers for various CPU access operations.Thomas Hellstrom
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>
2009-04-15gallium: Make sure we flush before some texture / buffer operations.Thomas Hellstrom
Also implement context member functions to optimize away those flushes whenever possible. Signed-off-by: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
2009-04-07st: implement GL_DEPTH_STENCIL format for glReadPixels and DrawPixels()Brian Paul
2009-04-06mesa: Fix orientation adjustment for reading stencil pixels.José Fonseca
Fixes conform spcorner.c & spclear.c failure.
2009-04-03mesa: remove the noClamp parameter to _mesa_pack_rgba_span_float()Brian Paul
It was only set to GL_TRUE in one place where it isn't really needed (glGetTexImage(sRGB format)).
2009-03-28mesa: add new signed rgba texture formatRoland Scheidegger
This is a (partial) backport of the signed texture format support in OGL 3.1. Since it wasn't promoted from an existing extension roll our own.
2009-03-27mesa: Support Z24S8 wherever S8Z24 is supported.José Fonseca
2009-03-04gallium: Unify reference counting.Michel Dänzer
The core reference counting code is centralized in p_refcnt.h. This has some consequences related to struct pipe_buffer: * The screen member of struct pipe_buffer must be initialized, or pipe_buffer_reference() will crash trying to destroy a buffer with reference count 0. u_simple_screen takes care of this, but I may have missed some of the drivers not using it. * Except for rare exceptions deep in winsys code, buffers must always be allocated via pipe_buffer_create() or via screen->*buffer_create() rather than via winsys->*buffer_create().
2009-02-13gallium: Various coordinate fixups for texture transfers.Michel Dänzer
Fixes glReadPixels, gl(Copy)TexSubImage, glCopyPixels.
2009-02-05gallium: No longer allow CPU mapping surfaces directly.Michel Dänzer
Instead, a new pipe_transfer object has to be created and mapped for transferring data between the CPU and a texture. This gives the driver more flexibility for textures in address spaces that aren't CPU accessible. This is a first pass; softpipe/xlib builds and runs glxgears, but it only shows a black window. Looks like something's off related to the Z buffer, so the depth test always fails.
2008-12-12gallium: avoid mapping same vertex buffer in subsequent framesKeith Whitwell
Quite a few util modules were maintaining a single vertex buffer over multiple frames, and potentially reusing it in subsequent frames. Unfortunately that would force us into syncrhonous rendering as the buffer manager would be forced to wait for the previous rendering to complete prior to allowing the map. This resolves that issue, but requires the state tracker to issue a few new flush() calls at the end of each frame.
2008-08-24gallium: refactor/replace p_util.h with util/u_memory.h and util/u_math.hBrian Paul
Also, rename p_tile.[ch] to u_tile.[ch]
2008-08-19gallium: implement a fast-path for glReadPixels for common casesBrian Paul
2008-07-13util: Eliminate pipe from the arguments to pipe_get/put_tile_xxx functions.José Fonseca
You don't need a pipe_context * for this, and all other necessary info is already inside pipe_surface.
2008-06-27gallium: Drop pipe_texture->cpp and pipe_surface->cpp.José Fonseca
The chars-per-pixel concept falls apart with compressed and yuv images, where more than one pixel are coded in a single data block.
2008-06-24mesa: Use appropriate unsigned/signed, float/integer types.José Fonseca
2008-05-18Merge branch 'gallium-0.1' into gallium-tex-surfacesBrian Paul
2008-05-17s/PIPE_FORMAT_U_S8/PIPE_FORMAT_S8_UNORM/Brian Paul
2008-05-07gallium: fix some render to texture bugsBrian Paul
Before, we were sometimes rendering into a stale texture because st_finalize_texture() would discard the old texture and create a new one. Moved st_update_framebuffer atom after texture validation so that we can create a new renderbuffer surface if the texture changes. Also, split texture validation into two parts: finalize_textures and update_textures. Do finalize_textures first to avoid getting into the situtation where we're doing a pipe->surface_copy() mid-way through state validation. Some debug code still in place, but disabled...
2008-05-06gallium: create drawing surfaces as GPU_READ/WRITE onlyBrian Paul
Create different temporary surfaces for CPU_READ/WRITE when needed (such as for glReadPixels, glAccum, some glCopy/DrawPixels, glCopyTexSubImage, etc).
2008-05-01gallium: tex surface checkpointKeith Whitwell
2008-04-28gallium: check for PIPE_FORMAT_X8Z24_UNORM formatBrian Paul
2008-04-10gallium: fix readback of z16 valuesBrian Paul
2008-04-09gallium: more elaborate tracking of front color buffer stateBrian Paul
This fixes the case where the app calls SwapBuffers then calls glReadPixels to read the front color buffer. We now keep track of when the front buffer is a _logically_ copy of the back buffer (after SwapBuffers) and read from the back color buffer instead of the front.
2008-04-03gallium: include st_cb_bitmap.h to silence warningBrian Paul
2008-04-03gallium: call st_flush_bitmap_cache()Brian Paul
2008-03-26gallium: Change pipe->flush() interface to optionally return a fence.Michel Dänzer
The cell driver still uses an internal CELL_FLUSH_WAIT flag, in the long run proper fencing should be implemented for it.
2008-03-21Refactor PBO validate/map code.Brian
We always need to do PBO validation, so do that in core Mesa before calling driv er routine. cherry-picked from Mesa/master.
2008-03-21gallium: implement PBO operations for glDraw/ReadPixels and glBitmapBrian Paul
At this time there are no optimizations for directly blitting between buffer objects and surfaces (always go through mappings). glean pbo test passes now
2008-02-15Code reorganization: update build.José Fonseca
Update the Makefiles and includes for the new paths. Note that there hasn't been no separation of the Makefiles yet, and make is jumping all over the place. That will be taken care shortly. But for now, make should work. It was tested with linux and linux-dri. Linux-cell and linux-llvm might require some minor tweaks.
2008-02-12gallium: fix/finish glReadPixels(GL_DEPTH_COMPONENT).Brian
This fixes demos/reflect ('d' key) and tests/zreaddraw.c
2008-01-14Remove pipe->get/put_tile_rgba.Michel Dänzer
pipe_get/put_tile_rgba() now use pipe->get/put_tile internally. Also simplify the <format>_get/put_tile_rgba() helper functions and clean up some inconsitencies in them.
2008-01-14Remove mapping fields from struct pipe_surface.Michel Dänzer
It's now the responsibility of surface users to keep track of their mappings.
2007-12-20gallium: make state tracker explictly ask for rendercache flushesKeith Whitwell
2007-12-07Replace "duplicate" formatsBrian
2007-12-07Eliminate struct pipe_region.Michel Dänzer
Directly use struct pipe_buffer_handle for storage and struct pipe_surface for (un)mapping.
2007-11-29Move dimensions from struct pipe_region to struct pipe_surface.Michel Dänzer
2007-11-20initial support for PIPE_FORMAT_Z24_S8Brian
2007-10-25Move the get/put_tile() functions to pipe_context.Brian
The _rgba versions are temporary until the state tracker is updated.
2007-10-18fix function nameBrian
2007-10-18make read_stencil_pixels() non-staticBrian
2007-10-17fix addressing error in read_stencil_pixels()Brian
2007-10-13GL_STENCIL_INDEX supportBrian
2007-10-13get_tile() of Z surfaces returns floats nowBrian
2007-10-03basic support for reading GL_DEPTH_COMPONENTBrian
2007-08-13Added st_fb_orientation() function to determine the up/down orientation of ↵Brian
the framebuffer.