R600 To Do list
And here is the R6xx/R7xx to do list; if you feel something is missing please add it. If you have done something and it no longer needs to be investigated, happily erase it from here :).
To Do
General Optimization
- Handle fallbacks more gracefully. E.g., when a shader fails to compile.
- Fix space accounting. Sometimes we end up generating command buffers that are too big due to bad space accounting.
- [Easy] Shaders: when scalar(trans) instruction has writemask with 1 component only dont' issue separate MOV instruction
- set correct channel in instruction itself. See assemble_math_function()
- [Medium] Switch vertex fetch to use fetch shaders rather than making it part of the vertex shader. This decouples vertex fetch and swizzling from the actual vertex shader. Changes in vertex formats or swizzles only require the fetch shader to be recompiled. Also allows the use of semantic ids for vertex fetch.
- [Medium] Use semantic ids for shader routing (fetch to vertex, vertex to fragment). Define semantic attribute ids and the hw will route appropriately based on the semantic id; no need to worry about ordering.
Features
- [EASY] Implement ARB_draw_elements_base_vertex (see reg: VGT_INDX_OFFSET)
Notes
- R600 trig functions input must be normalized from radians by dividing by 2*PI. Valid input domain is [-256, 256] which corresponds to an unnormalized input domain of [-512*PI, 512*PI]. For SIN, an out of range input results in 0.0f, for COS, 1.0f.
Bugs
All open bugs assigned to Drivers/DRI/r600 or DRM/Radeon
- glean/exactRGBA: This error is bogus, we should ignore it.
- glean/paths: We should support polygon stippling in hardware.
- texturing/cubemap: The LOD calculation in hardware is somewhat incorrect, nothing we can do about it.
- y0 seems to be inverted with WPOS provided to fragment shader
- piglit tex-indirections where 2 adjacent tex instructions use previous one's output produces garbage. In this case they have to be split into separate clauses
- rv740 only reports zpass counts for half of its DBs
Done
These items from this page have already been completed.
- Add support for EXT_vertex_array_bgra. This should be pretty easy now that r600 supports draw_prims
- Add missing shader instructions ARL, EXP, LOG ...
- Occlusion Queries
- [EASY] Implement ARB_depth_clamp (see regs: PA_CL_CLIP_CNTL, PA_SC_VPORT_ZMIN_*, PA_SC_VPORT_ZMAX_*)


