summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'gallium-userbuf'Marek Olšák2012-05-115-257/+111
|\ | | | | | | | | | | | | | | 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
| * st/mesa: unmap upload buffer after uploading indices and constantsMarek Olšák2012-04-302-0/+2
| |
| * cso: cso_context should install u_vbuf by itself and not st/mesaMarek Olšák2012-04-302-29/+0
| | | | | | | | so that it's installed in the other state trackers too
| * gallium: add void *user_buffer to pipe_constant_bufferMarek Olšák2012-04-301-6/+3
| | | | | | | | This reduces CPU overhead when updating constants.
| * st/mesa: reorder code in draw_vboMarek Olšák2012-04-301-12/+12
| |
| * st/mesa: remove more unnecessary code in draw_vboMarek Olšák2012-04-301-16/+1
| | | | | | | | The variables set here are not used anywhere.
| * gallium: add void *user_buffer in pipe_index_bufferMarek Olšák2012-04-301-10/+7
| | | | | | | | | | | | | | 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: add void *user_buffer in pipe_vertex_bufferMarek Olšák2012-04-304-160/+31
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * st/mesa: make user constant buffers optionalMarek Olšák2012-04-303-7/+25
| |
| * gallium: change set_constant_buffer to be UBO-friendlyMarek Olšák2012-04-301-7/+9
| |
| * st/mesa: make user index buffers optionalMarek Olšák2012-04-303-1/+16
| | | | | | | | v2: use a separate upload buffer for indices
| * st/mesa: only set index buffer when drawing is indexedMarek Olšák2012-04-301-25/+21
| | | | | | | | and restructure the code a bit
* | st/mesa: Use local temporary registers.Francisco Jerez2012-05-111-4/+4
| | | | | | | | | | Local makes more sense in most places because non-inline function calls are unimplemented anyway.
* | glsl_to_tgsi: use TGSI_OPCODE_CEIL for ir_unop_ceilChristoph Bumiller2012-05-091-3/+1
| | | | | | | | | | The implementation using FLR was buggy, the second negation could get lost.
* | mesa: add gl_context::NewDriverState and use it for vertex arraysMarek Olšák2012-05-084-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The vbo module recomputes its states if _NEW_ARRAY is set, so it shouldn't use the same flag to notify the driver. Since we've run out of bits in NewState and NewState is for core Mesa anyway, we need to find another way. This patch is the first to start decoupling the state flags meant only for core Mesa and those only for drivers. The idea is to have two flag sets: - gl_context::NewState - used by core Mesa only - gl_context::NewDriverState - used by drivers only (the flags are defined by the driver and opaque to core Mesa) It makes perfect sense to use NewState|=_NEW_ARRAY to notify the vbo module that the user changed vertex arrays, and the vbo module in turn sets a driver-specific flag to notify the driver that it should update its vertex array bindings. The driver decides which bits of NewDriverState should be set and stores them in gl_context::DriverFlags. Then, Core Mesa can do this: ctx->NewDriverState |= ctx->DriverFlags.NewArray; This patch implements this behavior and adapts st/mesa. DriverFlags.NewArray is set to ST_NEW_VERTEX_ARRAYS. Core Mesa only sets NewDriverState. It's the driver's responsibility to read it whenever it wants and reset it to 0. Reviewed-by: Brian Paul <[email protected]>
* | mesa: move gl_client_array*[] from vbo_draw_func into gl_contextMarek Olšák2012-05-084-5/+6
|/ | | | | | | | | | | | | | | | | | In the future we'd like to treat vertex arrays as a state and not as a parameter to the draw function. This is the first step towards that goal. Part of the goal is to avoid array re-validation for every draw call. This commit adds: const struct gl_client_array **gl_context::Array::_DrawArrays. The pointer is changed in: * vbo_draw_method * vbo_rebase_prims - unused by gallium * vbo_split_prims - unused by gallium * st_RasterPos Reviewed-by: Brian Paul <[email protected]>
* mesa/st: Fix derreference after free.José Fonseca2012-04-251-2/+6
|
* u_vbuf: take advantage of all new vertex fetch capsMarek Olšák2012-04-241-1/+3
|
* st/mesa: always expose ARB_ES2_compatibilityMarek Olšák2012-04-241-3/+1
| | | | u_vbuf translates GL_FIXED too if needed.
* st/mesa: always expose ARB_half_float_vertexMarek Olšák2012-04-241-3/+1
| | | | u_vbuf kicks in and translates it to float if it's unsupported.
* gallium: make user vertex buffers optionalMarek Olšák2012-04-242-0/+29
| | | | | | | | | | | This couldn't be split because it would break bisecting. Summary: * r300g,r600g: stop using u_vbuf * r300g,r600g: also report that the FIXED vertex type is unsupported * u_vbuf: refactor for use in the state tracker * cso: wire up u_vbuf with cso_context * st/mesa: conditionally install u_vbuf
* st/mesa: use cso_set_index_buffer and cso_draw_vboMarek Olšák2012-04-241-7/+9
| | | | Reviewed-by: Brian Paul <[email protected]>
* st/mesa: no-op glCopyPixels if source region is out of boundsBrian Paul2012-04-231-1/+9
| | | | | | | | | If the source region for a glCopyPixels is completely outside the source buffer bounds, no-op the copy. Fixes a failed assertion. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Jose Fonseca <[email protected]>
* st/mesa: use bitshifting to define state flagsMarek Olšák2012-04-191-6/+6
| | | | | Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]>
* gallium/u_gen_mipmap: don't release vertex buffer at end of frame / in glFlushMarek Olšák2012-04-181-4/+0
| | | | | There's no reason to do that. The buffer being used for rendering is always mapped as unsynchronized.
* gallium/u_blit: don't release vertex buffer at end of frame / in glFlushMarek Olšák2012-04-181-1/+0
| | | | | There's no reason to do that. The buffer being used for rendering is always mapped as unsynchronized.
* st/mesa: write vertices directly into the buffer for glClear fallbackMarek Olšák2012-04-182-20/+21
|
* st/mesa: use u_upload_mgr to upload vertices for glClear fallbackMarek Olšák2012-04-184-66/+11
|
* st/mesa: write vertices directly into the buffer in glDrawPixelsMarek Olšák2012-04-181-17/+15
|
* st/mesa: use u_upload_mgr to upload vertices for glDrawPixelsMarek Olšák2012-04-181-8/+9
|
* st/mesa: use u_upload_mgr to upload vertices for glDrawTexOESMarek Olšák2012-04-181-13/+13
|
* st/mesa: write vertices directly into the buffer for glBitmapMarek Olšák2012-04-182-30/+32
|
* st/mesa: use u_upload_mgr to upload vertices for glBitmapMarek Olšák2012-04-183-59/+23
| | | | instead of recreating the vertex buffer for each draw_vbo call.
* st/mesa: add ARB_blend_func_extended support to state tracker.Dave Airlie2012-04-133-5/+12
| | | | | | | | This adds the blend mode mapping, it also uses the var->index in the glsl to tgsi convertor - this is the other half of my using 4 in the GLSL compiler. Signed-off-by: Dave Airlie <[email protected]>
* st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.Vinson Lee2012-04-091-0/+4
| | | | | | | | | Fixes uninitialized member defects reported by Coverity. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* st/mesa: fix max_offset computation for base vertexBrian Paul2012-04-061-2/+18
| | | | | | | | | | | | | | Add the maximum base vertex offset to max_index for computing the buffer size. Fixes a failed assertion in the u_upload_mgr.c code with the VMware svga driver. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=48141 v2: incorporate Marek's suggestions. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Marek Olšák <[email protected]>
* glsl: Remove ir_call::get_callee() and set_callee().Kenneth Graunke2012-04-021-1/+1
| | | | | | | | | | | | | Previously, set_callee() performed some assertions about the type of the ir_call; protecting the bare pointer ensured these checks would be run. However, ir_call no longer has a type, so the getter and setter methods don't actually do anything useful. Remove them in favor of accessing callee directly, as is done with most other fields in our IR. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* gallium: adapt to get_query_result interface changeMarek Olšák2012-03-301-2/+2
| | | | Reviewed-by: Brian Paul <[email protected]>
* st/mesa: fix mipmap image size computation w.r.t. texture arraysBrian Paul2012-03-231-3/+15
| | | | | | | | | The image height or depth is the array_size for array textures. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=47742 NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Jakob Bornecrantz <[email protected]>
* st/mesa: set MaxUnrollIterations = 255Brian Paul2012-03-211-0/+2
| | | | | | | | | | The default was 32 for the EmitNoLoops=0 case. This allows the oZone3D soft shadows test to work properly with the vmware driver. Jose reported that SM3 supports up to 255 loop iterations. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <[email protected]>
* mesa: rework texture completeness testingBrian Paul2012-03-201-1/+1
| | | | | | | | | | | | | | | | | | | Instead of gl_texture_object::_Complete there are now two fields: _BaseComplete and _MipmapComplete. The former indicates whether the base texture level is valid. The later indicates whether the whole mipmap is valid. With sampler objects, a single texture can appear to be both complete and incomplete at the same time. See the GL_ARB_sampler_objects spec for more details. To implement this we now check if the texture is complete with respect to a sampler state. Another benefit of this is we no longer need to invalidate a texture's completeness state when we change the minification/magnification filters with glTexParameter(). Reviewed-by: José Fonseca <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* st/mesa: add null pointer check in st_texture_image_map()Brian Paul2012-03-171-0/+3
| | | | | | | | | | | | If we failed to allocate a memory resource for the texture we'd crash when we tried to map it. Now we propogate the NULL back up to the texstore code and generate GL_OUT_OF_MEMORY. Fixes a crash with the upcoming piglit max-texture-size test. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <[email protected]>
* Revert "st/mesa: don't unreference user attribs up front."Brian Paul2012-03-011-6/+3
| | | | | | | This reverts commit 72931ca4b9fb1002f5b62b74f7f7f32e94e80fde. This commit caused a few piglit regressions (quad-invariance, draw-batch, etc) with the vmware svga driver.
* st/mesa: remove old assertionBrian Paul2012-02-291-3/+0
|
* st/mesa: don't unreference user attribs up front.Dave Airlie2012-02-281-3/+6
| | | | | | | | postpone unreferences until end of function, as the ones in use will get naturally dereferenced. Reviewed-by: Brian Paul <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* gallium: remove PIPE_SHADER_CAP_OUTPUT_READMarek Olšák2012-02-271-11/+2
| | | | | | | | | | | | r600g is the only driver which has made use of it. The reason the CAP was added was to fix some piglit tests when the GLSL pass lower_output_reads didn't exist. However, not removing output reads breaks the fallback for glClampColorARB, which assumes outputs are not readable. The fix would be non-trivial and my personal preference is to remove the CAP, considering that reading outputs is uncommon and that we can now use lower_output_reads to fix the issue that the CAP was supposed to workaround in the first place.
* st/mesa: initialize the MaxViewport, MaxRenderbufferSize constantsBrian Paul2012-02-241-0/+8
| | | | | Use the max 2D/rect texture size as the limit. If that's not true for some devices we'll need new PIPE_CAP_ queries.
* st/mesa: stop using MAX_WIDTH in st_cb_texture.cBrian Paul2012-02-241-10/+27
| | | | Reviewed-by: José Fonseca <[email protected]>
* st/mesa: stop using MAX_WIDTH in st_cb_drawpixels.cBrian Paul2012-02-241-26/+29
| | | | Reviewed-by: José Fonseca <[email protected]>
* st/mesa: use pipe_sampler_view_release()Brian Paul2012-02-231-13/+5
| | | | Reviewed-by: Jose Fonseca <[email protected]>