summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/softpipe
Commit message (Collapse)AuthorAgeFilesLines
* gallium: expose ARB_map_buffer_alignment on RadeonMarek Olšák2012-10-311-0/+1
| | | | | | | | Reviewed-by: Brian Paul <[email protected]> v2: update relnotes-9.1 v3: use align_malloc and align_free for malloced buffers in r300g v4: document the new CAP in the docs
* gallium: add start_slot parameter to set_vertex_buffersMarek Olšák2012-10-313-8/+12
| | | | | | | | | | | | | | | | | | | | | This allows updating only a subrange of buffer bindings. set_vertex_buffers(pipe, start_slot, count, NULL) unbinds buffers in that range. Binding NULL resources unbinds buffers too (both buffer and user_buffer must be NULL). The meta ops are adapted to only save, change, and restore the single slot they use. The cso_context can save and restore only one vertex buffer slot. The clients can query which one it is using cso_get_aux_vertex_buffer_slot. It's currently set to 0. (the Draw module breaks if it's set to non-zero) It should decrease the CPU overhead when using a lot of meta ops, but the drivers must be able to treat each vertex buffer slot as a separate state (only r600g does so at the moment). I can imagine this also being useful for optimizing some OpenGL use cases. Reviewed-by: Brian Paul <[email protected]>
* softpipe: remove extraneous whitespaceBrian Paul2012-10-261-2/+0
|
* gallium: unify transfer functionsMarek Olšák2012-10-118-183/+74
| | | | | | | | | | | | | | "get_transfer + transfer_map" becomes "transfer_map". "transfer_unmap + transfer_destroy" becomes "transfer_unmap". transfer_map must create and return the transfer object and transfer_unmap must destroy it. transfer_map is successful if the returned buffer pointer is not NULL. If transfer_map fails, the pointer to the transfer object remains unchanged (i.e. doesn't have to be NULL). Acked-by: Brian Paul <[email protected]>
* softpipe: remove unused functionsMarek Olšák2012-10-112-26/+0
| | | | Reviewed-by: Brian Paul <[email protected]>
* softpipe: initialize quadColor2 to fix compile warningsMarek Olšák2012-10-091-1/+1
|
* softpipe: implement blitMarek Olšák2012-09-303-0/+69
| | | | | Tested-by: Michel Dänzer <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* gallium: add PIPE_CAP_TEXTURE_MULTISAMPLEMarek Olšák2012-09-301-0/+1
| | | | | Tested-by: Michel Dänzer <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* softpipe: fix set_framebuffer_state with uninitialized surfaces past nr_cbufs-1Marek Olšák2012-09-301-3/+5
| | | | | Tested-by: Michel Dänzer <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* softpipe: implement the new can_create_resource() functionBrian Paul2012-09-172-5/+29
| | | | | | And define a SP_MAX_TEXTURE_SIZE value as we do in llvmpipe. Reviewed-by: Jose Fonseca <[email protected]>
* softpipe: update SP_MAX_TEXTURE_3D_LEVELS commentBrian Paul2012-09-161-1/+1
| | | | 9 levels = max size of 256 texels.
* llvmpipe: remove polygon stipple assertionBrian Paul2012-08-171-2/+0
| | | | | | | It's possible for us to have an unused sampler bound when the fragment shader itself doesn't use any samplers. So the assertion isn't valid. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53616
* softpipe: add 'start' parameter to bind_sampler_states/views()Brian Paul2012-08-161-25/+49
| | | | | To support updating a sub-range of sampler states/views in the future. Note that we always pass start=0 at this time.
* gallium: remove PIPE_MAX_VERTEX/GEOMETRY_SAMPLERS #defineBrian Paul2012-08-163-9/+5
| | | | | | | | | | | | PIPE_MAX_SAMPLERS, PIPE_MAX_VERTEX_SAMPLERS and PIPE_MAX_GEOMETRY_SAMPLERS were all defined to the same value (16). In various places we're creating arrays such as sampler_views[PIPE_SHADER_TYPES][PIPE_MAX_SAMPLERS] so we were assuming the same number of max samplers for all shader stages anyway. Of course, drivers are still free to advertise different numbers of max samplers for different shaders.
* gallium: add a shader stage/type param to some draw functionsBrian Paul2012-08-161-6/+8
| | | | | To prepare for geometry shader texture support in the draw module. Note: we still only handle the vertex shader case.
* softpipe: fix softpipe_delete_fs_state() failed assertionBrian Paul2012-08-101-2/+4
| | | | | | | | | | | | | The var!=softpipe->fs_variant assertion was failing because we weren't nulling the softpipe->fs_variant pointer when binding a new shader. Since softpipe->fs_variant depends on the current fs, it's of no use when a new FS is bound. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53318 Note: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <[email protected]>
* softpipe: fix loop limit for tex_cache[] arrayBrian Paul2012-08-071-1/+1
| | | | Fixes https://bugs.freedesktop.org/show_bug.cgi?id=53199
* softpipe: consolidate vert/frag/geom sampler setting functionsBrian Paul2012-08-061-112/+54
| | | | | | | | | | | | The functions for setting samplers and sampler views for vertex, fragment and geometry shaders were nearly identical. Now they use shared code. In the future, if the pipe_context functions for setting samplers and sampler views for vert/frag/geom/compute are combined, this will make updating the softpipe driver a snap. Reviewed-by: José Fonseca <[email protected]>
* softpipe: consolidate sampler-related arraysBrian Paul2012-08-066-121/+99
| | | | | | | | | | Combine separate arrays for vertex/fragment/geometry samplers, etc into one array indexed by PIPE_SHADER_x. This allows us to collapse separate code for vertex/fragment/geometry state into loops over the shader stage. More to come. Reviewed-by: José Fonseca <[email protected]>
* softpipe: combine vert/frag/geom texture caches in an arrayBrian Paul2012-08-065-91/+60
| | | | | | This lets us consolidate some code now, and more in subsequent patches. Reviewed-by: José Fonseca <[email protected]>
* softpipe: fix copy/paste error in tex sample codeOlivier Galibert2012-07-251-2/+2
| | | | | | Fixes https://bugs.freedesktop.org/show_bug.cgi?id=52369 Reviewed-by: Brian Paul <[email protected]>
* softpipe: Fix segfault with fbo-cubemap.Olivier Galibert2012-07-191-1/+6
| | | | | | | | | | | | | | | | | | | The cube sampler generates two-dimensional texture coordinates and hence passes NULL for the array for the third one. The actual 2D sampler, lower in the pipe, knew not to used that array since it didn't need it. But the samplers have become single-texel and the coordinate array dereference has been moved up one step, to a level where the code does not know only two coordinates are used. Hence the segfault. The simplest fix by far is to add a third dummy coordinate array in the call to the next pipe step, which will be dereferenced to an harmless 0 which then will be happily ignored by the sampler. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=52250 Signed-off-by: Olivier Galibert <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* softpipe: Take all lods into account when texture sampling.Olivier Galibert2012-07-182-766/+645
| | | | | | | | | | | | This patch churns a lot because it needs to change 4-wide filters into single pixel filters, since each fragment may use a different filter. The only case not entirely supported is the anisotropic filtering. Not sure what we want to do there, since a full quad is required by that filter. Signed-off-by: Olivier Galibert <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* draw,gallivm: Fix draw_get_shader_param.José Fonseca2012-07-131-12/+6
| | | | | | | | | | - Use LLVM limits when LLVM is being used, instead of TGSI limits - Provide draw_get_shader_param_no_llvm for when llvm is never used (softpipe) - Eliminate several of the hacks around draw shader caps in several drivers Unfortunately the hack for PIPE_MAX_VERTEX_SAMPLERS is still necessary. Reviewed-by: Marek Olšák <[email protected]>
* softpipe: implement get_timestamp and expose ARB_timer_queryMarek Olšák2012-07-101-1/+10
| | | | PIPE_QUERY_TIMESTAMP is already implemented and working.
* gallium: add QUERY_TIMESTAMP cap and get_timestamp screen functionMarek Olšák2012-07-101-0/+1
|
* softpipe: fix numFragsEmitted debug codeBrian Paul2012-06-271-0/+7
|
* softpipe: handle more PIPE_CAP_x queriesBrian Paul2012-06-261-3/+31
| | | | | | | | | | These all return zero. Add a debug_printf() to catch the default case so we don't accidently mishandle something important in the future. v2: remove 'default' case to get compile-time warning Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: José Fonseca <[email protected]>
* softpipe: Offset is not to be applied to the layer parameter of array ↵Olivier Galibert2012-06-191-2/+2
| | | | | | | texture fetches. Signed-off-by: Olivier Galibert <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* automake: Globally add stub automake targets to the old Makefiles.Eric Anholt2012-06-111-3/+0
| | | | | | | | | I tried to update all the old Makefiles that included the default config to be sure they had a default target if they didn't previously have one, since this new all target will always point at it. Almost everything had one. Reviewed-by: Kenneth Graunke <[email protected]>
* draw: simplify index buffer specificationBrian Paul2012-05-312-4/+5
| | | | | Replace draw_set_index_buffer() and draw_set_mapped_index_buffer() with draw_set_indexes() which simply takes a pointer and an index size.
* gallium: remove user_buffer_create from the interfaceMarek Olšák2012-05-121-2/+0
| | | | Nothing uses it now.
* Merge branch 'gallium-userbuf'Marek Olšák2012-05-116-10/+37
|\ | | | | | | | | | | | | | | Conflicts: src/gallium/docs/source/screen.rst src/gallium/drivers/nv50/nv50_state.c src/gallium/include/pipe/p_defines.h src/mesa/state_tracker/st_draw.c
| * softpipe: cast away const to silence warningBrian Paul2012-05-011-1/+2
| |
| * gallium: remove pipe_resource::user_ptrMarek Olšák2012-04-301-1/+0
| | | | | | | | It's unused now.
| * gallium: add void *user_buffer to pipe_constant_bufferMarek Olšák2012-04-303-3/+21
| | | | | | | | This reduces CPU overhead when updating constants.
| * gallium: add void *user_buffer in pipe_index_bufferMarek Olšák2012-04-301-3/+6
| | | | | | | | | | | | | | Adapted drivers: i915, llvmpipe, r300, r600, radeonsi, softpipe. User index buffers have been disabled in nv30, nv50, nvc0 and svga to keep things working.
| * gallium: remove pipe_context::redefine_user_bufferMarek Olšák2012-04-301-1/+0
| |
| * gallium: add void *user_buffer in pipe_vertex_bufferMarek Olšák2012-04-301-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | This reduces CPU overhead in st_draw_vbo and removes a lot of unnecessary code in that function which was required only to comply with the gallium interface, but wasn't any useful really. Adapted drivers: i915, llvmpipe, r300, softpipe. No changes required in: r600, radeonsi. User vertex buffers have been disabled in nv30, nv50, nvc0 and svga to keep things working.
| * gallium: change set_constant_buffer to be UBO-friendlyMarek Olšák2012-04-301-1/+2
| |
| * gallium: add PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENTMarek Olšák2012-04-301-0/+2
| | | | | | | | | | | | | | | | This is required for any serious constant buffer support. Constant buffer offsets on ATI and NVIDIA DX10 and DX11 GPUs must be a multiple of 256. In OpenGL, this can be queried via GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT.
| * gallium: add PIPE_CAP_USER_INDEX_BUFFERS and PIPE_CAP_USER_CONSTANT_BUFFERSMarek Olšák2012-04-301-0/+2
| |
* | softpipe: use any_swizzle() helper in sp_tex_sample.cBrian Paul2012-05-011-8/+15
| | | | | | | | Reviewed-by: Jose Fonseca <[email protected]>
* | softpipe: whitespace, comment clean-ups in sp_tex_sample.cBrian Paul2012-05-011-26/+32
| | | | | | | | Reviewed-by: Jose Fonseca <[email protected]>
* | softpipe: implement coord clamping for texel fetches (TXF)Brian Paul2012-05-011-14/+31
|/ | | | | | | | | | The GL spec says out of bounds fetches produce undefined results. Use clamping to avoid failed assertions or crashes. Fixes failed assertion in https://bugs.freedesktop.org/show_bug.cgi?id=49125 but the test still fails. Reviewed-by: Jose Fonseca <[email protected]>
* gallium drivers: report that user vertex buffers are supportedMarek Olšák2012-04-241-0/+2
|
* gallium: add user_ptr in pipe_resourceMarek Olšák2012-04-241-0/+1
| | | | I need to access the pointer in st/mesa when I only have pipe_resource.
* softpipe: add dual source blending supportDave Airlie2012-04-132-12/+88
| | | | | | This adds support for a single dual source blending MRT to softpipe. Signed-off-by: Dave Airlie <[email protected]>
* gallium: rename DUAL_SOURCE_BLEND cap to MAX_DUAL_SOURCE_RENDER_TARGETSDave Airlie2012-04-131-0/+2
| | | | | | Though I don't think we'll ever expose > 1. Signed-off-by: Dave Airlie <[email protected]>
* gallium: adapt to get_query_result interface changeMarek Olšák2012-03-301-2/+3
| | | | Reviewed-by: Brian Paul <[email protected]>