summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
Commit message (Collapse)AuthorAgeFilesLines
* st/mesa: use BITFIELD64_BIT() macro in a few more placesBrian Paul2011-03-153-4/+4
|
* gallium: add texture barrier support to the interface and st/mesa (v2)Marek Olšák2011-03-154-0/+103
| | | | v2: change the gallium entry point to texture_barrier.
* st/mesa: Make use of the new PIPE_TRANSFER_DISCARD_* for buffer object.Mathias Fröhlich2011-03-151-5/+9
| | | | | | | | In memory mapping buffer objects make use of PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE and PIPE_TRANSFER_DISCARD_RANGE when appropriate. Signed-off-by: Mathias Fröhlich <[email protected]>
* gallium: Delay the creation of simple helper shadersJakob Bornecrantz2011-03-121-16/+38
|
* u_blitter: Do blits in linear color space.Henri Verbeet2011-03-121-1/+1
| | | | | Blits between sRGB and linear formats should happen in linear color space. This fixes piglit fbo/fbo-srgb-blit.
* gallium: remove flags from the flush functionMarek Olšák2011-03-114-8/+8
| | | | | | | | | | The drivers have been changed so that they behave as if all of the flags were set. This is already implicit in most hardware drivers and required for multiple contexts. Some state trackers were also abusing the PIPE_FLUSH_RENDER_CACHE flag to decide whether flush_frontbuffer should be called. New flag ST_FLUSH_FRONT has been added to st_api.h as a replacement.
* gallium: remove the geom_flags param from is_format_supportedMarek Olšák2011-03-118-160/+119
|
* gallium: cleanup fence_signalled and fence_finishMarek Olšák2011-03-112-3/+3
| | | | So that they don't have the driver-specific param and return type.
* st/mesa: remove unnecessary flushesMarek Olšák2011-03-111-3/+0
| | | | | | | The framebuffer cache flush should be implicit when calling set_framebuffer_state. There is no need to flush the command stream either.
* gallium: add timeout parameter to fence_finishMarek Olšák2011-03-082-3/+4
| | | | | This is a follow-up to the ARB_sync patch for st/mesa and completes the ARB_sync implementation.
* st/mesa: implement ARB_syncMarek Olšák2011-03-084-0/+166
| | | | | | The ServerWaitSync implementation matches Intel's driver. The extension is advertised when pipe_screen::fence_finish is set.
* st/mesa: cleanup checking for signed compressed formats in generate_mipmapsMarek Olšák2011-03-081-8/+4
|
* st/mesa: add LATC and 3DC supportMarek Olšák2011-03-083-3/+76
| | | | softpipe passes all tests.
* st/mesa: Fix an incorrect user vertex buffer referenceThomas Hellstrom2011-03-081-4/+2
| | | | | | | | st->user_vb[attr] was always pointing to the same user vb, regardless of the value of attr. Together with reverting the temporary workaround for bug 34378, and a fix in the svga driver, this fixes googleearth on svga. Signed-off-by: Thomas Hellstrom <[email protected]>
* st/mesa: fail to alloc a renderbuffer if st_choose_renderbuffer_format failsMarek Olšák2011-03-071-1/+5
| | | | | | This fixes: state_tracker/st_format.c:401:st_pipe_format_to_mesa_format: Assertion `0' failed.
* st/mesa: fix incorrect version checking codeBrian Paul2011-03-071-2/+3
|
* gallium: split CAP_INSTANCE_DRAWING into INSTANCEID and INSTANCE_DIVISORMarek Olšák2011-03-051-1/+3
| | | | | | | | ARB_instanced_arrays is a subset of D3D9. ARB_draw_instanced is a subset of D3D10. The point of this change is to allow D3D9-level drivers to enable ARB_instanced_arrays without ARB_draw_instanced.
* st/mesa: set PIPE_BIND_RENDER_TARGET for sRGB formats if UNORM is supportedMarek Olšák2011-03-041-2/+9
| | | | | | | | Because the format can be changed to UNORM in a surface. This fixes: state_tracker/st_atom_framebuffer.c:163:update_framebuffer_state: Assertion `framebuffer->cbufs[i]->texture->bind & (1 << 1)' failed.
* mesa/st: fix softpipe npot compressed mipmaps.Dave Airlie2011-03-021-2/+2
| | | | | | | | | | this fixes fbo-generatemipmap-formats rgtc and s3tc in NPOT mode with softpipe. r600g fails to even get level 0 correct so have to look into that a bit further. Signed-off-by: Dave Airlie <[email protected]>
* mesa/st: fix generate mipmap for signed compressed formats.Dave Airlie2011-03-021-32/+63
| | | | | | | | This was always converting to 8-bit per channel unsigned formats, which isn't suitable for RGTC signed formats, this special cases those two formats and converts to floats for those. Signed-off-by: Dave Airlie <[email protected]>
* st/mesa: use RGTC for GL_COMPRESSED_RED/RG if possibleMarek Olšák2011-03-021-2/+8
| | | | With proper fallback formats.
* st/mesa: probably handle instanced drawingChristian König2011-03-011-12/+23
| | | | Remove the previous workaround for instanced drawing and implement it correctly.
* mesa: move PBO-related functions into a new fileBrian Paul2011-02-284-0/+4
|
* mesa/st: add RGTC format support.Dave Airlie2011-02-282-0/+33
| | | | this just adds a format check + format conversion.
* st/mesa & v_bug_mgr: two small instanced drawing fixesChristian König2011-02-281-0/+2
|
* gallium/st: place value check before value is useJerome Glisse2011-02-251-1/+1
| | | | | | 7.9 & 7.10 candidate Signed-off-by: Jerome Glisse <[email protected]>
* st/mesa: treat 1D ARRAY upload like a depth or 2D array upload.Dave Airlie2011-02-241-0/+12
| | | | | | | | | | | | | This is because the HW doesn't always store a 1D array like a 2D texture, it more likely stores it like 2D texture (i.e. alignments etc). This means we upload each slice separately and let the driver work out where to put it. this might break nvc0 as I can't test it, I have only nv50 here. Signed-off-by: Dave Airlie <[email protected]>
* st/mesa: fix computing the lowest address for interleaved attribsWiktor Janas2011-02-231-3/+6
| | | | | | | | | Ptr can be very well NULL, so when there are two arrays, with one having offset 0 (and thus NULL Ptr), and the other having a non-zero offset, the non-zero value is taken as minimum (because of !low_addr ? start ...). On 32-bit systems, this somehow works. On 64-bit systems, it leads to crashes. Signed-off-by: Marek Olšák <[email protected]>
* st/mesa: fix crash when using both user and vbo buffers with the same strideMarek Olšák2011-02-201-0/+8
| | | | | | | | | If two buffers had the same stride where one buffer is a user one and the other is a vbo, it was considered to be one interleaved buffer, resulting in incorrect rendering and crashes. This patch makes sure that the interleaved buffer is either user or vbo, not both.
* st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULLMarek Olšák2011-02-201-6/+10
| | | | This fixes the game Tiny and Big.
* st/mesa: need to translate clear color according to surface's base formatBrian Paul2011-02-214-47/+75
| | | | | | | | | | | When clearing a GL_LUMINANCE_ALPHA buffer, for example, we need to convert the clear color (R,G,B,A) to (R,R,R,A). We were doing this for texture border colors but not renderbuffers. Move the translation function to st_format.c and share it. This fixes the piglit fbo-clear-formats test. NOTE: This is a candidate for the 7.9 and 7.10 branches.
* st/mesa: fix the default case in st_format_datatype()Brian Paul2011-02-211-5/+2
| | | | | | Part of the fix for piglit fbo-clear-formats NOTE: This is a candidate for the 7.9 and 7.10 branches.
* st/mesa: fix incorrect texture size allocation in st_finalize_texture()Brian Paul2011-02-211-3/+18
| | | | | | | | If finalizing a non-POW mipmapped texture with an odd-sized base texture image we were allocating the wrong size of gallium texture (off by one). Need to be more careful about computing the base texture image size. This fixes https://bugs.freedesktop.org/show_bug.cgi?id=34463
* st/mesa: refactor guess_and_alloc_texture() codeBrian Paul2011-02-211-35/+60
|
* st/mesa: fix mipmap generation for non-POW texturesBrian Paul2011-02-211-7/+7
| | | | This is part of the fix for https://bugs.freedesktop.org/show_bug.cgi?id=34463
* st/mesa: set renderbuffer _BaseFormat in a few placesBrian Paul2011-02-181-0/+2
| | | | NOTE: This is a candidate for the 7.9 and 7.10 branches
* st/mesa: check buffer orientation in blit_copy_pixels()Brian Paul2011-02-181-3/+4
| | | | | Can't invert the region if copying between surfaces with different orientations.
* st/mesa: fix geometry corruption by always re-binding vertex arraysMarek Olšák2011-02-181-1/+3
| | | | | | | | | | | This is a temporary workaround. It fixes sauerbrauten with shaders enabled. I guess we might be changing vertex attribs somewhere and not updating the appropriate dirty flags, therefore we can't rely on them for now. Or maybe we need to make this state dependent on some other flags too. More info: https://bugs.freedesktop.org/show_bug.cgi?id=34378
* st/mesa: implement blit-based path for glCopyPixelsBrian Paul2011-02-171-0/+114
| | | | | If doing a simple non-overlapping glCopyPixels with no per-fragment ops we can use pipe_context::resource_copy_region().
* st/mesa: indentation fixBrian Paul2011-02-171-1/+1
|
* st/mesa: fix incorrect glCopyPixels position on fallback pathBrian Paul2011-02-171-3/+4
| | | | | | | | | If we hit the pipe_get/put_tile() path for setting up the glCopyPixels texture we were passing the wrong x/y position to pipe_get_tile(). The x/y position was already accounted for in the pipe_get_transfer() call so we were effectively reading from 2*readX, 2*readY. NOTE: This is a candidate for the 7.9 and 7.10 branches.
* st/mesa: remove unused screen variablesBrian Paul2011-02-171-2/+0
|
* mesa: Remove the DXT compression via blit path.José Fonseca2011-02-162-157/+1
| | | | No longer used.
* gallium: add usage parameter to pipe_buffer_createMarek Olšák2011-02-155-6/+31
| | | | | And set a reasonable buffer usage flag everywhere instead of just PIPE_USAGE_DEFAULT.
* st/mesa: fix compressed mipmap generation.Dave Airlie2011-02-151-6/+4
| | | | | | | | | If the underlying transfer had a stride wider for hw alignment reasons, the mipmap generation would generate badly strided images. this fixes a few problems I found while testing r600g with s3tc Signed-off-by: Dave Airlie <[email protected]>
* st/mesa: fix GLES buildMarek Olšák2011-02-151-1/+1
| | | | | | Broken since d5062fb3a315c46d77d5c954a3e3c14be1907d33. I wonder why this code is hidden behind #if by default.
* st/mesa: Use blend equation and function of first render target for all ↵Fabian Bieler2011-02-141-8/+11
| | | | | | | | | | | render targets if ARB_draw_buffers_blend is not supported If EXT_draw_buffers2 is supported but ARB_draw_buffers_blend isn't _mesa_BlendFuncSeparateEXT only sets up the blend equation and function for the first render target. This patch makes sure that update_blend doesn't try to use the data from other rendertargets in such cases. Signed-off-by: Brian Paul <[email protected]>
* gallium: notify drivers about possible changes in user buffer contentsMarek Olšák2011-02-143-0/+48
| | | | Also implement the redefine_user_buffer hook in the drivers.
* st/mesa: set vertex arrays state only when necessaryMarek Olšák2011-02-141-182/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | The vertex arrays state should be set only when (_NEW_ARRAY | _NEW_PROGRAM) is dirty. This assumes user buffer content is mutable, which will be sorted out in the next commit. The following usage case should be much faster now: for (i = 0; i < 1000; i++) { glDrawElements(...); } Or even: for (i = 0; i < 1000; i++) { glSomeStateChangeOtherThanArraysOrProgram(...); glDrawElements(...); } The performance increase from this may be significant in some apps and negligible in others. It is especially noticable in the Torcs game (r300g): Before: 15.4 fps After: 20 fps Also less looping over attribs in st_draw_vbo yields slight speed-up in apps with lots of glDraw* calls.
* gallium: remove pipe_vertex_buffer::max_indexMarek Olšák2011-02-142-6/+0
| | | | | This is redundant to pipe_draw_info::max_index and doesn't really fit in the optimizations I plan.