summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cb_bufferobjects.c
AgeCommit message (Collapse)Author
2010-02-19Replace _mesa_malloc, _mesa_calloc and _mesa_free with plain libc versionsKristian Høgsberg
2010-02-19Remove _mesa_memcpy in favor of plain memcpy.Kenneth Graunke
This may break the SUNOS4 build, but it's no longer relevant.
2010-02-09mesa: Ensure object refcount is null when destroying the buffer.José Fonseca
Lets see if this is not too pedantic. Obj pointers are never exposed to GL apps so it should be possible to get this right. Furthermore apps with GL widgets and test suits create and destroy many contexts and objects, so bad reference counting is not really an option.
2010-02-02gallium: pipe/p_inlines.h -> util/u_inlines.hJosé Fonseca
2010-01-03mesa: Cope with the degenerate case of zero length ranges.José Fonseca
Fixes assertion failures on glean's bufferObject test.
2009-12-23gallium: only create pipe buffer when size is nonzeroMaarten Maathuis
- This fixes a crash upon starting spring (a rts engine/game). Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
2009-11-06mesa: Translate MAP_UNSYNCHRONIZED_BIT.José Fonseca
2009-09-03mesa: change ctx->Driver.BufferData() to return GLboolean for success/failureBrian Paul
Return GL_FALSE if we failed to allocate the buffer. Then raise GL_OUT_OF_MEMORY in core Mesa.
2009-08-31st/mesa: fix obj->Pointer offset in st_bufferobj_map_range()Brian Paul
This fixes a bunch of gallium regressions since commit 8096aa521369c3bcf5226c060efa6dd06e48ddc8
2009-06-30Merge branch 'mesa_7_5_branch'Brian Paul
Conflicts: src/mesa/vbo/vbo_exec_draw.c
2009-06-30mesa: Set FLUSH_EXPLICIT_BIT flags when calling FlushMappedBufferRange.José Fonseca
As prescribed by ARB_map_buffer_range.
2009-06-19st/mesa: restore some parameter checking buffer object functionsBrian Paul
These functions may be called from the VBO code (not just user GL calls) so do some parameter sanity checking.
2009-06-19st/mesa: remove redundant st_buffer_object::size field and error checksBrian Paul
Just use the gl_buffer_object::Size field. Remove unnecessary size/offset error checks. Core Mesa will have already done these checks before these functions are called.
2009-06-09mesa/st: fix tracking of mapped buffer rangesKeith Whitwell
In st_bufferobj_map_range(), set obj->Offset consistently with its usage elsewhere.
2009-06-09Merge branch 'mesa_7_5_branch'Jakob Bornecrantz
Conflicts: Makefile src/mesa/main/version.h src/mesa/shader/slang/slang_preprocess.c src/mesa/state_tracker/st_cb_bufferobjects.c
2009-06-08st/mesa: fix incorrect bufObj Length assignment, remove unneeded assertionBrian Paul
2009-06-02st/mesa: minor clean-ups, reformatting, etcBrian Paul
2009-06-02st/mesa: implement/enable GL_ARB_copy_buffer extensionBrian Paul
2009-05-13st/mesa: enable GL_APPLE_vertex_array_object for gallium driversBrian Paul
2009-04-21st: report GL_OUT_OF_MEMORY instead of assertingBrian Paul
2009-04-20st: assert on pipe_buffer_create failureKeith Whitwell
This needs a proper fix to propogate the out-of-memory condition back up to Mesa and the app as a GL error. Until then, at least catch the problem at its source.
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-03-04mesa: Follow ARB_map_buffer_range more stricly.José Fonseca
Namelly, FlushMappedBufferRange takes a subrange relative to the original range.
2009-03-04Merge commit 'origin/master' into gallium-map-rangeJosé Fonseca
2009-03-04mesa: Implement and use FlushMappedBufferRange.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-03-03mesa: Massage the interface to more closely resemble ARB_map_buffer_rangeJosé Fonseca
2009-03-03Merge commit 'origin/gallium-0.1'Keith Whitwell
Conflicts: scons/gallium.py src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c src/gallium/include/pipe/p_defines.h src/mesa/vbo/vbo_exec_api.c src/mesa/vbo/vbo_exec_draw.c
2009-03-03mesa/st: implement MapBufferRange callbackKeith Whitwell
Using PIPE_BUFFER_USAGE_DONTBLOCK.
2009-02-24gallium: Add pipe_buffer_write/read inlines.José Fonseca
Saves code, and will simplify future interface changes.
2009-02-12mesa: use new ST_CALLOC_STRUCT() macro in gallium state trackerBrian Paul
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.
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-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-01-25gallium: rename pipe_buffer_handle to pipe_buffer, rework pipebuffer/ codeKeith Whitwell
Provide an actual definition of the pipe_buffer struct, containing the parameters used to create the buffer, and its refcount. Shift refcounting buffers out of the winsys interface, similar to surfaces & textures. Rework pipebuffer/ to reflect the fact these changes, and also Michel's reworking of the buffer interface.
2008-01-25gallium: Simplify winsys buffer interface.Michel Dänzer
The properties of a buffer represented by struct pipe_buffer_handle are now basically constant over its lifetime. The state tracker gets to deal with any more complex buffer semantics it may need to provide.
2007-12-09add fence interfaces and buffer create flags to pipe_winsyskeithw
2007-11-06Supply buffer usage hints to winsys.José Fonseca
Winsys driver needs some hints in order to allocate the appropriate kind of memory for the buffer.
2007-09-10merge buffer_unreference(), buffer_reference()Brian
2007-08-10Lift common winsys functions into pipe's new p_winsys.Keith Whitwell
2007-08-10minor clean-upsBrian
2007-08-10pipe->region_alloc() now takes width instead of pitch, plus a flags paramBrian
2007-08-06New st_init_*_functions() to initialize the driver functions table.Brian
We need to do these initializations before initializing the Mesa context because context init involves creating texture/program/etc objects.
2007-08-06Add pipe buffer managment functions.Keith Whitwell
The state_tracker driver needs these to implement, eg. pixel buffer objects, vertex buffer objects.