summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cb_clear.c
AgeCommit message (Collapse)Author
2009-07-29mesa/st: recognize no-op scissor state when checking clear_with_quadsKeith Whitwell
Some apps enable scissor but set the rectangle to the dimensions of the window. Don't let this force us onto a slower clear path.
2009-06-11mesa: Use new pf_is_depth_and_stencil inline.José Fonseca
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-04gallium: Clean up driver clear() interface.Michel Dänzer
Only allows clearing currently bound buffers, but colour and depth/stencil in a single call.
2009-04-04gallium: Add utility helper for packing combined depth/stencil values.Michel Dänzer
2009-03-26gallium: Remove some little-used fields from struct pipe_surface.Michel Dänzer
2009-03-13gallium: consolidate bypass_vs and bypass_clipping flagsKeith Whitwell
The draw module provides a similar interface to the driver which is retained as various bits of hardware may be able to take on incremental parts of the vertex pipeline. However, there's no need to advertise all this complexity to the state tracker. There are basically two modes now - normal and passthrough/screen-coords.
2009-03-13gallium: no need to keep a copy of shader tokens in state trackerKeith Whitwell
Any driver who needs a copy of the shader tokens must organize to do so itself. This has been the case for a long time, but there was still defensive code in the state tracker, which is now removed. Any bugs resulting from this need to be fixed in the offending driver...
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-24gallium: Add pipe_buffer_write/read inlines.José Fonseca
Saves code, and will simplify future interface changes.
2009-02-19mesa: Free the util shaders with the gallium's FREE.José Fonseca
2009-02-12mesa: consistantly use mesa memory-functions in gallium state trackerBrian Paul
Use _mesa_malloc(), _mesa_free(), etc everywhere, not malloc(), free(), etc. Still using CALLOC_STRUCT() at this point.
2009-01-27gallium: standardize naming of masksZack Rusin
2008-12-15Merge commit 'origin/gallium-0.1' into gallium-0.2Alan Hourihane
Conflicts: src/gallium/winsys/gdi/SConscript
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-11-05Merge commit 'origin/gallium-0.1' into gallium-0.2Brian Paul
Conflicts: src/gallium/auxiliary/rtasm/rtasm_execmem.c src/mesa/shader/slang/slang_emit.c src/mesa/shader/slang/slang_log.c src/mesa/state_tracker/st_atom_framebuffer.c
2008-11-03softpipe: Don't call pipe_buffer_destroy directly.José Fonseca
Use pipe_buffer_reference instead.
2008-10-18gallium: add some checks for null surface pointers in state trackerBrian Paul
Fixes some segfaults in low memory situations.
2008-09-05gallium: document that clear color is intentionally always ↵Brian Paul
PIPE_FORMAT_A8R8G8B8_UNORM
2008-09-03gallium: Have pipe_buffer_* receive a pipe_screen instead of a pipe_context.José Fonseca
We want to use the pipe_buffer_* inlines everywhere, but a pipe context is not always available nor is it needed.
2008-07-15st: Silence compiler warnings on Windows.Michal Krol
2008-05-20gallium: fix mem leaksBrian Paul
2008-05-02Some changed for non-C99 compilersAlan Hourihane
2008-04-30gallium: use new buffer wrapper functions in p_inlines.hBrian Paul
This allows us to remove most of the direct references to winsys in the state tracker.
2008-04-24gallium: use cso_destroy_vertex/fragment_shader() functionsBrian Paul
Also, rearrange the st_destroy_context() code a bit to prevent some invalid/NULL ptr derefs during tear-down.
2008-04-21use cso fs/vs handle functionsKeith Whitwell
2008-04-21gallium: Use CSO cache for shaders.Michel Dänzer
2008-04-18gallium: Always pass colour clear value to driver as A8R8G8B8.Michel Dänzer
2008-04-03gallium: set rasterizer.gl_rasterization_rules = 1 in a few more placesBrian
2008-04-03gallium: streamline viewport/raster/shader state for clearing with quadsBrian Paul
Move init of these items to new st_init_clear().
2008-04-03gallium: remove the temporary/test TEST_DRAW_PASSTHROUGH codeBrian Paul
2008-04-03gallium: use identity viewport fix broken clear_with_quad() pathBrian Paul
Since bypass_clipping is set and we're specifying quad vertexes in window coords, setup identity viewport.
2008-03-27gallium: Update calls to the simple shader functionsBrian
2008-03-20gallium: in clear_with_quad() check fb orientation, invert Y if neededBrian
2008-03-20gallium: create one vertex buffer and re-use, also enable bypass_clippingBrian
Quad clears should be a little more efficient now.
2008-03-20gallium: use the utility pasthrough shadersBrian
This avoids the Mesa->TGSI translation step.
2008-03-19gallium: implement CSO save/restore functions for use by meta operations ↵Brian
(blit, gen-mipmaps, quad-clear, etc) Also, additional cso_set_*() functions for viewport, framebuffer, blend color, etc. state.
2008-03-18gallium: restore additional state after clearing with quadBrian
2008-03-18gallium: use new color packing utility functionsBrian
2008-03-13gallium: for TEST_DRAW_PASSTHROUGH, pass inClipCoords=FALSE to ↵Brian
st_draw_vertices() When pass-through mode is fully supported we'll clean this up more.
2008-03-13gallium: add some temporary code for testing draw module vertex passthroughBrian
Set TEST_DRAW_PASSTHROUGH=1, run progs/trivial/clear-scissor
2008-03-12gallium: in clear_stencil_buffer() check surface format to determine stencil ↵Brian
clear value ... as we do for the Z and Z+stencil cases
2008-03-11gallium: rework CSO-related code in state trackerBrian
Use the code in cso_context.c rather than st_cache.c. Basically, binding of state objects now goes through the CSO module. But Vertex/fragment shaders go through pipe->bind_fs/vs_state() since they're not cached by the CSO module at this time. Also, update softpipe driver to handle NULL state objects in various places. This happens during context destruction. May need to update other drivers...
2008-02-28gallium: State tracker cleanups wrt clears.Keith Whitwell
2008-02-14gallium: Cleanups related to clears.Keith Whitwell
2008-02-12gallium: rename st_fragment_program's fs field to cso to match st_vertex_programBrian
2008-02-08gallium: added inClipCoords param to st_draw_vertices() to indicate coord ↵Brian
system of vertices Also, export st_make_passthrough_vertex_shader() from st_cb_drawpixels.c
2008-01-28gallium: check if surface has defined status in check_clear_depth_with_quad()Brian
This was part of Keith's patch from Friday.
2008-01-14Fix problems with vertex shaders and the private draw module.Brian
The CSO returned by pipe->create_vs_state() can't be passed to the private draw module. That was causing glRasterPos to blow up. Add a 'draw_shader' field to st_vertex_program for use with the private draw module. Change st_context->state.vs type from cso_vertex_shader to st_vertex_program.
2007-12-17gallium: incorporate alpha state into depth_stencil state object.Keith Whitwell