summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600
Commit message (Collapse)AuthorAgeFilesLines
* r600g: fixup AR handling (v5)Dave Airlie2012-01-204-7/+106
| | | | | | | | | | | | | | | | | | | | | | | So it appears R600s (except rv670) do AR handling different using a different opcode. This patch fixes up r600g to work properly on r600. This fixes ~100 piglit tests here (in GLSL1.30 mode) on rv610. v3: add index_mode as per the docs. This still fails any dst relative tests for some reason I can't quite see yet, but it passes a lot more tests than without. v4: add a nop after dst.rel this could be improved using a second pass, where we only insert nops if two instructions are sure to collide. The docs say r600, rv610, rv630 needs this, and not rv670, rs780, rs880, need AMD to confirm rv620, rv635. v5: add is_nop_inst. NOTE: This is a candidate for stable branches. Signed-off-by: Dave Airlie <[email protected]>
* r600g: fix typo in evergreen registerAlex Deucher2012-01-191-7/+6
| | | | Signed-off-by: Alex Deucher <[email protected]>
* r600g: fix ISLT on r600/700Dave Airlie2012-01-181-1/+1
| | | | | | This fixes ISLT like evergreen. Signed-off-by: Dave Airlie <[email protected]>
* r600g: make r600/700 use correct ineg.Dave Airlie2012-01-181-1/+1
| | | | | | Noticed by Vadim Girlin on irc. Signed-off-by: Dave Airlie <[email protected]>
* r600g: fix some of the interpolation tests.Dave Airlie2012-01-181-5/+10
| | | | | | | This enables linear gradients if we need a linear, it also sets the flat shade flag for color/constant interpolations. Signed-off-by: Dave Airlie <[email protected]>
* r600g: fix UINT_TO_FLT on evergreenVadim Girlin2012-01-181-1/+1
| | | | | | | It should be processed as trans-only. Signed-off-by: Vadim Girlin <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* r600g: add workaround for original R600 PS setupAlex Deucher2012-01-171-2/+7
| | | | | | | | | The original R600 requires the UNCACHED_FIRST_INST bit to be set in the PS. Signed-off-by: Alex Deucher <[email protected]> Note: this is candidate for the stable branches.
* r600g: fix recip_uint on r600.Dave Airlie2012-01-181-0/+1
| | | | Signed-off-by: Dave Airlie <[email protected]>
* r600g: fix USLT for r600-egVadim Girlin2012-01-171-2/+2
|
* r600g: rework IDIV/UDIV and implement MOD/UMOD (v2)Vadim Girlin2012-01-172-133/+593
| | | | | Signed-off-by: Vadim Girlin <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* r600g: fix mullo_uint trans slot only on r600/r700Dave Airlie2012-01-151-1/+1
| | | | | | This fixes 8 piglit tests that currently assert. Signed-off-by: Dave Airlie <[email protected]>
* r600g: implement clip distancesVadim Girlin2012-01-156-17/+111
| | | | | Signed-off-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* r600g: implement two-sided lighting (v3)Vadim Girlin2012-01-156-25/+135
| | | | | | | | | v2: select the colors in the pixel shader v3: fix rs state creation for pre-evergreen Signed-off-by: Vadim Girlin <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* r600g: add support for ISHR/USHR/SHL on r600-evergreenVadim Girlin2012-01-152-10/+13
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* r600g: implement IDIV/UDIV on r600-evergreenVadim Girlin2012-01-151-4/+222
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* r600g: implement ISSG on r600-evergreenVadim Girlin2012-01-151-0/+63
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* r600g: implement IABS on r600-evergreenVadim Girlin2012-01-151-0/+60
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* r600g: implement F2U on evergreenVadim Girlin2012-01-151-2/+2
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* r600g: add FLT_TO_UINT opcode for evergreenVadim Girlin2012-01-152-1/+4
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* r600g: fix F2I on evergreenVadim Girlin2012-01-151-1/+50
| | | | Signed-off-by: Vadim Girlin <[email protected]>
* vl: reintroduce PIPE_VIDEO_CAP_PREFERED_FORMATChristian König2012-01-151-0/+2
| | | | | | | Create the video buffers in the format the driver preffers. This temporary creates problems with decoder less VDPAU video playback. Signed-off-by: Christian König <[email protected]>
* r600g: vertex id support.Dave Airlie2012-01-151-8/+15
| | | | | | | | | | | | This requires GLSL 1.30 enabled, which requires integer types enabled, so don't bother doing an INT to FLT conversion on it. We should probably remove the instance id flt->int conversion when turning on native integers. this passes the three piglit tests with GLSL 1.30 forced on. Signed-off-by: Dave Airlie <[email protected]>
* r600g: make u2f trans onlyDave Airlie2012-01-151-1/+1
| | | | | | as per the r600 isa doc. Signed-off-by: Dave Airlie <[email protected]>
* gallium: improve the pipe_stream_output_info struct (v2)Marek Olšák2012-01-155-42/+19
| | | | | | | | | | | | | | | | | | | | | There are 3 changes: 1) stride is specified for each buffer, not just one, so that drivers don't have to derive it from the outputs 2) new per-output property dst_offset, which specifies the offset into the buffer in dwords where the output should be stored, so that drivers don't have to compute the offsets manually; this will also be useful for gl_SkipComponents from ARB_transform_feedback3 3) register_mask is removed, instead, there is start_component and num_components; register_mask with non-consecutive 1s doesn't make much sense (some hardware cannot do packing of components) Christoph Bumiller: fixed nvc0. v2: resolve merge conflicts in Draw and clean it up
* r600g: add r600 version of UINT_TO_FLT conversion.Dave Airlie2012-01-141-0/+1
| | | | Signed-off-by: Dave Airlie <[email protected]>
* r600g: fix r600 f2i to be trans only emitted.Dave Airlie2012-01-141-1/+1
| | | | | | This fixes a lot of asserts about the trans unit being used already. Signed-off-by: Dave Airlie <[email protected]>
* r600g: add missing case for uint->flt conversion.Dave Airlie2012-01-141-0/+1
| | | | | | fixes some piglits like vs-decrement-uint.shader_test Signed-off-by: Dave Airlie <[email protected]>
* r600g: add missing r32 uint/sint fbo formats.Dave Airlie2012-01-142-0/+8
| | | | | | Fixes the GL3 required formats test. Signed-off-by: Dave Airlie <[email protected]>
* r600g: add support for virtual address space on cayman v11Jerome Glisse2012-01-137-38/+97
| | | | | | | | | | | | | | | | | | | | | | | | | Virtual address space put the userspace in charge of their GPU address space. It's up to userspace to bind bo into the virtual address space. Command stream can them be executed using the IB_VM chunck. This patch add support for this configuration. It doesn't remove the 64K ib size limit thought this limit can be extanded up to 1M for IB_VM chunk. v2: fix rendering v3: fix rendering when using index buffer v4: make vm conditional on kernel support add basic va management v5: catch the case when we already have va for a bo v6: agd5f: update on top of ioctl changes v7: agd5f: further ioctl updates v8: indentation cleanup + fix non cayman v9: rebase against lastest mesa + improvement from Marek & Michel v10: fix cut/paste bug v11: don't rely on updated radeon_drm.h Signed-off-by: Jerome Glisse <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
* r600g: don't advertise integers yet on r600.Dave Airlie2012-01-121-2/+0
| | | | | | | | Still some work to be done before this is finished. This is a candidate for 8.0 branch. Signed-off-by: Dave Airlie <[email protected]>
* Squash-merge branch 'gallium-clip-state'Marek Olšák2012-01-104-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gallium/auxiliary/tgsi/tgsi_strings.c src/mesa/state_tracker/st_atom_clip.c commit d919791f2742e913173d6b335128e7d4c63c0840 Author: Christoph Bumiller <[email protected]> Date: Fri Jan 6 17:59:22 2012 +0100 d3d1x: adapt to new clip state commit cfec82bca3fefcdefafca3f4555285ec1d1ae421 Author: Christoph Bumiller <[email protected]> Date: Fri Jan 6 14:16:51 2012 +0100 gallium/docs: update for clip state changes commit c02bfeb81ad9f62041a2285ea6373bbbd602912a Author: Christoph Bumiller <[email protected]> Date: Fri Jan 6 14:21:43 2012 +0100 tgsi: add TGSI_PROPERTY_PROHIBIT_UCPS commit d4e0a785a6a23ad2f6819fd72e236acb9750028d Author: Brian Paul <[email protected]> Date: Thu Jan 5 08:30:00 2012 -0700 tgsi: consolidate TGSI string arrays in new tgsi_strings.h There was some duplication between the tgsi_dump.c and tgsi_text.c files. Also use some static assertions to help catch errors when adding new TGSI values. v2: put strings in tgsi_strings.c file instead of the .h file. Reviewed-by: Dave Airlie <[email protected]> commit c28584ce0d8c62bd92c8f140729d344f88a0b3cd Author: Christoph Bumiller <[email protected]> Date: Fri Jan 6 12:48:09 2012 +0100 gallium: extend user_clip_plane_enable to apply to clip distances commit f1d5016c07f786229ed057effbe55fbfd160b019 Author: Marek Olšák <[email protected]> Date: Fri Jan 6 02:39:09 2012 +0100 nvfx: adapt to new clip state commit 6f6fa1c26bd19f797c1996731708e3569c9bfe24 Author: Marek Olšák <[email protected]> Date: Fri Jan 6 01:41:39 2012 +0100 st/mesa: fix DrawPixels with GL_DEPTH_CLAMP commit c86ad730aa1c017788ae88a55f54071bf222be12 Author: Christoph Bumiller <[email protected]> Date: Tue Jan 3 23:51:30 2012 +0100 nv50: adapt to new clip state commit 3a8ae6ac243bae5970729dc4057fe02d992543dc Author: Christoph Bumiller <[email protected]> Date: Tue Jan 3 23:32:36 2012 +0100 nvc0: adapt to new clip state commit 6243a8246997f8d2fcc69ab741a2c2dea080ff11 Author: Marek Olšák <[email protected]> Date: Thu Dec 29 01:32:51 2011 +0100 draw: initalize pt.user.planes in draw_init This fixes a crash in glean/fpexceptions. commit e3056524b19b56d473f4faff84ffa0eb41497408 Author: Marek Olšák <[email protected]> Date: Mon Dec 26 06:26:55 2011 +0100 svga: adapt to new clip state commit c5bfa8b37d6d489271df457229081d6bbb51b4b7 Author: Marek Olšák <[email protected]> Date: Sun Dec 25 14:11:51 2011 +0100 r600g: adapt to new clip state commit f11890905362f62627c4a28a8255b76eb7de7df2 Author: Marek Olšák <[email protected]> Date: Sun Dec 25 14:10:26 2011 +0100 r300g: adapt to new clip state commit e37465327c79a01112f15f6278d9accc5bf3103f Author: Marek Olšák <[email protected]> Date: Sun Dec 25 12:39:16 2011 +0100 draw: adapt to new clip state This adds a regression in the LLVM clipping path. Can anybody see anything wrong with the code? It works for every other case, just glean/fpexceptions crashes when doing the "Infinite clip plane test". commit b474d2b18c72d965eefae4e427c269cba5ce6ba2 Author: Marek Olšák <[email protected]> Date: Sun Dec 25 13:14:59 2011 +0100 u_blitter: don't save/set/restore clip state commit 9dd240ea91f523a677af45e8d0adb9e661e28602 Author: Marek Olšák <[email protected]> Date: Sun Dec 25 13:11:56 2011 +0100 gallium: don't cso_save/set/restore clip state The enable bits are in the rasterizer state. commit a4f7031179f5f4ad524b34b394214b984ac950f6 Author: Marek Olšák <[email protected]> Date: Sun Dec 25 12:58:55 2011 +0100 gallium: default depth_clip to 1 depth_clip = !depth_clamp commit fe21147a00ab90e549d63fe12ee4625c9c2ffcc3 Author: Marek Olšák <[email protected]> Date: Mon Dec 26 06:14:19 2011 +0100 trace,util: update state logging to new clip state Also dump the other missing flags. commit 2a3b96e84ac872dcc5bc1de049fe76bb58d64b23 Author: Marek Olšák <[email protected]> Date: Sun Dec 25 10:43:43 2011 +0100 st/mesa: adapt to new clip state commit b7b656a42fca19d7c85267f42649a206a85a2c72 Author: Marek Olšák <[email protected]> Date: Sat Dec 17 15:45:19 2011 +0100 gallium: move state enable bits from clip_state to rasterizer_state
* vl: replace decode_buffers with auxiliary data fieldChristian König2012-01-091-2/+0
| | | | | | | Based on patches from Maarten Lankhorst <[email protected]> Signed-off-by: Christian König <[email protected]> Acked-by: Maarten Lankhorst <[email protected]>
* r600g: remove obsolete MULTIWRITE commentAlex Deucher2012-01-061-1/+0
| | | | | | fs writes all is implemented in the shader on eg+. Signed-off-by: Alex Deucher <[email protected]>
* u_vbuf: implement another upload codepath which unrolls indicesMarek Olšák2012-01-051-1/+1
| | | | | | | Improves performance from cca 1 fps to 23 fps in Cogs. This new codepath is not always used, instead, there is a heuristic which determines whether to use it. Using translate for uploads is generally slower than what we have had already, it's a win only in a few cases.
* gallium: add flag PIPE_TRANSFER_MAP_PERMANENTLYMarek Olšák2012-01-051-0/+4
| | | | | | | | | | | Please see the diff for further info. This paves the way for moving user buffer uploads out of drivers and should allow to clean up the mess in u_upload_mgr in the meantime. For now only allowed for buffers on r300 and r600. Acked-by: Christian König <[email protected]>
* gallium: remove deprecated PIPE_TRANSFER_DISCARDMarek Olšák2012-01-051-1/+1
| | | | PIPE_TRANSFER_DISCARD_RANGE is defined the same.
* u_upload_mgr: remove the 'flushed' parameterMarek Olšák2012-01-052-7/+4
| | | | | | Not used by anybody. Reviewed-by: Brian Paul <[email protected]>
* r600g: add missing colorswaps for r8 uint/sint.Dave Airlie2012-01-022-0/+4
| | | | | | fixes some warnings in GL3.0 tests. Signed-off-by: Dave Airlie <[email protected]>
* r600g: Manage fences per screen rather than per context.Michel Dänzer2011-12-302-56/+65
| | | | | | | | | | | | | | | | A fence is a screen object and can outlive the context it was created from. The previous code would access freed memory in that case, resulting in various problems. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=44151 https://bugs.freedesktop.org/show_bug.cgi?id=44007 Probably fixes: https://bugs.freedesktop.org/show_bug.cgi?id=43993 NOTE: This is a candidate for the 7.11 branch. Signed-off-by: Michel Dänzer <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]>
* r600g: fix a warning that a variable may be uninitializedMarek Olšák2011-12-251-0/+2
|
* gallium: remove PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_ATTRIBSMarek Olšák2011-12-251-1/+0
| | | | | | It's the same as PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS. Reviewed-by: Brian Paul <[email protected]>
* winsys/radeon: move managing GEM domains back to driversMarek Olšák2011-12-244-2/+35
| | | | | | | | This partially reverts commit 363ff844753c46ac9c13866627e096b091ea81f8. It caused severe performance drops in Nexuiz. Reported by Phoronix. Tested by me on r300g and by IRC people on r600g.
* r600g: fix MAX_STREAM_OUTPUT_SEPARATE_ATTRIBS limitMarek Olšák2011-12-171-2/+1
|
* r600g: handle new capsMarek Olšák2011-12-171-0/+2
|
* r600g: implement transform feedbackMarek Olšák2011-12-1718-13/+873
| | | | | | | | r600: DONE. r700: MOSTLY (done but locks up). Evergreen: MOSTLY (done but doesn't work for an unknown reason). The kernel support will come soon.
* gallium: interface changes necessary to implement transform feedback (v5)Marek Olšák2011-12-151-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Namely: - EXT_transform_feedback - ARB_transform_feedback2 - ARB_transform_feedback_instanced The old interface was not useful for OpenGL and had to be reworked. This interface was originally designed for OpenGL, but additional changes have been made in order to make st/d3d1x support easier. The most notable change is the stream-out info must be linked with a vertex or geometry shader and cannot be set independently. This is due to limitations of existing hardware (special shader instructions must be used to write into stream-out buffers), and it's also how OpenGL works (stream outputs must be specified prior to linking shaders). Other than that, each stream output buffer has a "view" into it that internally maintains the number of bytes which have been written into it. (one buffer can be bound in several different transform feedback objects in OpenGL, so we must be able to have several views around) The set_stream_output_targets function contains a parameter saying whether new data should be appended or not. Also, the view can optionally be used to provide the vertex count for draw_vbo. Note that the count is supposed to be stored in device memory and the CPU never gets to know its value. OpenGL way | Gallium way ------------------------------------ BeginTF = set_so_targets(append_bitmask = 0) PauseTF = set_so_targets(num_targets = 0) ResumeTF = set_so_targets(append_bitmask = ~0) EndTF = set_so_targets(num_targets = 0) DrawTF = use pipe_draw_info::count_from_stream_output v2: * removed the reset_stream_output_targets function * added a parameter append_bitmask to set_stream_output_targets, each bit specifies whether new data should be appended to each buffer or not. v3: * added PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME for ARB_tfb2, note that the draw-auto subset is always required (for d3d10), only the pause/resume functionality is limited if the CAP is not advertised v4: * update gallium/docs v5: * compactified struct pipe_stream_output_info, updated dump/trace
* r600g: check shaders presence in r600_draw_vboVadim Girlin2011-12-061-0/+3
| | | | | | | | | | This patch should prevent the crashes when some shaders are absent, see https://bugs.freedesktop.org/show_bug.cgi?id=43341 Note this is a candidate for the stable branch. Signed-off-by: Vadim Girlin <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
* r600g: fix error path and use util_slab_freeJerome Glisse2011-12-051-1/+1
| | | | Signed-off-by: Jerome Glisse <[email protected]>
* r600g: add framebuffer support for 2/10/10/10 integerDave Airlie2011-11-272-0/+4
|
* r600g: add int support for 2/10/10/10 format.Dave Airlie2011-11-271-0/+3
| | | | | | integer wasn't set properly for the non-uniform types. Signed-off-by: Dave Airlie <[email protected]>