summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/r600/drm/r600d.h
AgeCommit message (Collapse)Author
2011-03-14r600g: emit SURFACE_BASE_UPDATE packet on rv6xxAlex Deucher
This packet is required when updating the DB, CB, or STRMOUT base addresses on rv6xx for the surface sync logic to work correctly. Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
2011-03-01r600g: add NV_conditional_render support.Dave Airlie
This is reliant on a drm patch that I posted on the list + a version bump. These will appear in drm-next today. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-12-07r600g: fix userspace fence against lastest kernelJerome Glisse
R6XX GPU doesn't like to have two partial flush writting back to memory in row without a prior flush of the pipeline. Add PS_PARTIAL_FLUSH to flush all work between the CP and the ES, GS, VS, PS shaders. Thanks a lot to Alban Browaeys (prahal on irc) for investigating this issue. Signed-off-by: Alban Browaeys <prahal@yahoo.com> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-11-19r600g: All EVENT_WRITE packets need the EVENT_INDEX fieldAlex Deucher
6xx-evergreen
2010-11-19r600g: fix occlusion query on evergreen (avoid lockup)Jerome Glisse
Occlusion query on evergreen need the event index field to be set otherwise we endup locking up the GPU. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-11-03r600g: set hardware pixel centers according to gl_rasterization_rulesKeith Whitwell
These were previously being left in the default (D3D) mode. This mean that triangles were drawn slightly incorrectly, but also because this state is relied on by the u_blitter code, all blits were half a pixel off.
2010-10-05r600g: userspace fence to avoid kernel call for testing bo busy statusJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-10-01r600g: add winsys support for CTL constants.Dave Airlie
These need to be emitted, we also need them to do proper vtx start, instead of abusing index offset.
2010-09-30r600g: use constant buffer instead of register for constantJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-26r600g: disable early cull optimization when occlusion query runningJerome Glisse
When occlusion query are running we want to have accurate fragment count thus disable any early culling optimization GPU has. Based on work from Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-24r600g: fix typo in evergreen define (resource are in [0x30000;0x34000] range)Jerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-17r600g: alternative command stream building from contextJerome Glisse
Winsys context build a list of register block a register block is a set of consecutive register that will be emited together in the same pm4 packet (the various r600_block* are there to provide basic grouping that try to take advantage of states that are linked together) Some consecutive register are emited each in a different block, for instance the various cb[0-7]_base. At winsys context creation, the list of block is created & an index into the list of block. So to find into which block a register is in you simply use the register offset and lookup the block index. Block are grouped together into group which are the various pkt3 group of config, context, resource, Pipe state build a list of register each state want to modify, beside register value it also give a register mask so only subpart of a register can be updated by a given pipe state (the oring is in the winsys) There is no prebuild register list or define for each pipe state. Once pipe state are built they are bound to the winsys context. Each of this functions will go through the list of register and will find into which block each reg falls and will update the value of the block with proper masking (vs/ps resource/constant are specialized variant with somewhat limited capabilities). Each block modified by r600_context_pipe_state_set* is marked as dirty and we update a count of dwords needed to emit all dirty state so far. r600_context_pipe_state_set* should be call only when pipe context change some of the state (thus when pipe bind state or set state) Then to draw primitive you make a call to r600_context_draw void r600_context_draw(struct r600_context *ctx, struct r600_draw *draw) It will check if there is enough dwords in current cs buffer and if not will flush. Once there is enough room it will copy packet from dirty block and then add the draw packet3 to initiate the draw. The flush will send the current cs, reset the count of dwords to 0 and remark all states that are enabled as dirty and recompute the number of dwords needed to send the current context. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-10r600g: add initial evergreen supportDave Airlie
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
2010-08-20r600g: add occlusion query supportDave Airlie
Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-17r600g: kill event type magic number in winsysDave Airlie
these events have names, use them.
2010-05-27r600g: adapt to latest interfaces changesMarek Olšák
- Wrapped the buffer and texture create/destroy/transfer/... functions using u_resource, which is then used to implement the resource functions. - Implemented texture transfers. I left the buffer and texture transfers separate because one day we'll need a special codepath for textures. - Added index_bias to the draw_*elements functions. - Removed nonexistent *REP and *FOR instructions. - Some pipe formats have changed channel ordering, so I've removed/fixed nonexistent ones. - Added stubs for create/set/destroy sampler views. - Added a naive implementation of vertex elements state (new CSO). - Reworked {texture,buffer}_{from,to}_handle. - Reorganized winsys files, removed dri,egl,python directories. - Added a new build target dri-r600.