summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/eg_asm.c
Commit message (Collapse)AuthorAgeFilesLines
* r600g: implement transform feedbackMarek Olšák2011-12-171-0/+29
| | | | | | | | 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.
* r600g: fix the representation of control-flow instructionsMarek Olšák2011-11-151-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | We need something that looks like a compiler and not like some hacker put some functions together. /rant This is a band-aid for these two problems: - The R600 and EG control-flow instructions appear in switch statements next to each other, causing conflicts when adding new instructions. - The ALU control-flow instructions are bitshifted by 3 (from CF_INST 26:29 to CF_INST 23:29, as is defined by r600 ISA) even for EG, where CF_INST is 22:29. To fix this mess, the 'inst' field is bitshifted to the left either by 22, 23, or 26 (directly in the definitions), such that it can be just or'd when making bytecode without any shifting. All switch statements have been divided into two, one for R600 and the other for EG. Of course, there is a better way to do this, but that is left for future work. Tested on RV730 and REDWOOD with no regressions. v2: minor cleanup as per Alex's comment. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
* r600g: rename bc -> bytecodeMarek Olšák2011-08-161-1/+1
| | | | It took me a while to figure out what it stands for.
* r600g: Replace the CHIPREV_* defines with the chip_class enum.Henri Verbeet2011-07-091-1/+1
| | | | Signed-off-by: Henri Verbeet <hverbeet@gmail.com>
* r600g: add initial cayman acceleration support.Dave Airlie2011-05-251-3/+7
| | | | | | | | | | | | | | | | Cayman is the RadeonHD 69xx series of GPUs. This adds support for 3D acceleration to the r600g driver. Major changes: Some context registers moved around - mainly MSAA and clipping/guardband related. GPR allocation is all dynamic no vertex cache - all unified in texture cache. 5-wide to 4-wide shader engines (no scalar or trans slot) - some changes to how instructions are placed into slots - removal of END_OF_PROGRAM bit in favour of END flow control clause - no vertex fetch clause - TC accepts vertex or texture Signed-off-by: Dave Airlie <airlied@redhat.com>
* r600g: Move fetch shader register setup to r600_state.c / evergreen_state.c.Henri Verbeet2011-03-141-12/+0
| | | | Signed-off-by: Henri Verbeet <hverbeet@gmail.com>
* r600g: implement instanced drawing supportChristian König2011-02-281-24/+2
|
* r600g: use burst exports in shadersChristian König2011-02-021-1/+2
| | | | | Join multiple exports into just one instruction instead of exporting each register separately.
* r600g: optimize away CF_INST_POPChristian König2011-01-121-0/+2
| | | | | If last instruction is an CF_INST_ALU we don't need to emit an additional CF_INST_POP for stack clean up after an IF ELSE ENDIF.
* r600g: Store kcache settings as an array.Henri Verbeet2011-01-071-6/+6
|
* r600g: build fetch shader from vertex elementsJerome Glisse2010-12-061-0/+35
| | | | | | | | | | | | Vertex elements change are less frequent than draw call, those to avoid rebuilding fetch shader to often build the fetch shader along vertex elements. This also allow to move vertex buffer setup out of draw path and make update to it less frequent. Shader update can still be improved to only update SPI regs (based on some rasterizer state like flat shading or point sprite ...). Signed-off-by: Jerome Glisse <jglisse@redhat.com>
* r600g: add fetch shader capabilitiesJerome Glisse2010-11-191-0/+2
| | | | | | | | Use fetch shader instead of having fetch instruction in the vertex shader. Allow to restrict shader update to a smaller part when vertex buffer input layout changes. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
* r600g: add assembler support for all the kcache fields.Dave Airlie2010-10-261-1/+6
|
* r600g: indentation fixesJerome Glisse2010-10-011-2/+2
| | | | Signed-off-by: Jerome Glisse <jglisse@redhat.com>
* r600g: delete old pathJerome Glisse2010-09-291-5/+4
| | | | | | Lot of clean can now happen. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
* r600g: misc cleanupJohn Doe2010-09-151-0/+1
| | | | | | | Avoid using r600_screen structure to get ptr to radeon winsys structure. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
* r600g: add initial evergreen supportDave Airlie2010-09-101-0/+84
adds shader opcodes + assembler support (except ARL) uses constant buffers add interp instructions in fragment shader adds all evergreen hw states adds evergreen pm4 support. this runs gears for me on my evergreen