Marek Olšák
ec9d5e181e
radeonsi: don't count IB space for states, just use an upper bound
...
Since we don't put any resource descriptors in IBs, the space used by draw
calls is quite small.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:15 +02:00
Marek Olšák
fc95058add
radeonsi: convert SPI state to an atom
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:15 +02:00
Marek Olšák
45e549fcbc
radeonsi: convert CB_TARGET_MASK setup to an atom
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
e21418f221
radeonsi: convert stencil ref state into an atom
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
c44de30979
radeonsi: convert blend color state into an atom
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
74aa64876b
radeonsi: convert sample mask state into an atom
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
12b205341a
radeonsi: convert clip state into an atom
...
Reducing calloc overhead.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
0c2eed0ede
radeonsi: avoid redundant CB and DB register updates
...
The main idea is to avoid setting CB_COLORi_INFO = 0 for i>0 repeatedly
when those colorbuffers aren't used. This is mainly for glamor.
Same for DB. Z_INFO and STENCIL_INFO need to be cleared only once.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
87c1e9e19c
radeonsi: use a bitmask for tracking dirty atoms
...
This mainly removes the cache misses when checking the dirty flags.
Not much else though.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:14 +02:00
Marek Olšák
5bb0ad7ccc
radeonsi: call si_init_atom for remaining radeonsi atoms
...
I need to initialize more atom IDs.
This adds 4 more si_init_atom calls, which simplifies the code.
(si_init_atom needs a different context type of the emit functions though)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:13 +02:00
Marek Olšák
ba7a6cf626
radeonsi: define the state atom array separately
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:13 +02:00
Marek Olšák
8a97528b3a
radeonsi: optimize viewport states
...
same as scissors
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:13 +02:00
Marek Olšák
f6a10f60b7
radeonsi: optimize scissor states
...
- convert 16 states to 1 atom
- only emit 1 scissor if VIEWPORT_INDEX isn't written
- use only one packet when emitting consecutive scissors
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:13 +02:00
Marek Olšák
05af645a95
radeonsi: fix memory usage checking for big IBs
...
Cc: 11.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
2015-09-01 21:51:13 +02:00
Marek Olšák
2c14a6d3b1
radeonsi: add IB tracing support for debug contexts
...
This adds trace points to all IBs and the parser prints them and also
prints which trace points were reached (executed) by the CP.
This can help pinpoint a problematic packet, draw call, etc.
Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
2015-08-26 19:25:19 +02:00
Marek Olšák
189953ee13
radeonsi: remove old CS tracing code
...
Some of it is left there and it will be re-used in the next commit.
Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
2015-08-26 19:25:19 +02:00
Marek Olšák
be6dc87776
radeonsi: save the contents of indirect buffers for debug contexts
...
This will be used by the IB parser.
Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
2015-08-26 19:25:19 +02:00
Grazvydas Ignotas
3206d4ed44
gallium/radeon: use helper functions to mark atoms dirty
...
This is analogous to r300_mark_atom_dirty() used by r300, and will
be used by later patches. For common radeon code, appropriate helper
is called through a function pointer.
No functional changes.
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
2015-08-11 14:46:53 +02:00
Marek Olšák
a3e81f819c
radeonsi: always flush framebuffer caches at the beginning of IBs
...
better safe than sorry
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
2015-08-06 22:54:03 +02:00
Marek Olšák
0615ad1c70
radeonsi: don't count the exact needed CS space if the CS is large enough
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2015-08-06 22:54:03 +02:00
Marek Olšák
d587742650
gallium/radeon: allow the winsys to choose the IB size
...
Picked from the amdgpu branch.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-08-06 20:44:35 +02:00
Marek Olšák
57245cce52
gallium/radeon: suspend timer queries between IBs
...
When we are measuring the time spent in a draw call, an unexpected flush
can distort the result.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-08-06 20:44:35 +02:00
Marek Olšák
08fd736a45
radeonsi: flush if the memory usage for an IB is too high
...
Picked from the amdgpu branch.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
2015-08-02 22:03:33 +02:00
Marek Olšák
3344699243
radeonsi: set VGT_LS_HS_CONFIG for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
74c1001d13
radeonsi: add derived tessellation state
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Michel Dänzer
800efb0690
radeonsi: Flush when we're asked to return a fence but don't have one yet
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
2015-07-22 16:11:39 +09:00
Marek Olšák
f1be3d8cdd
radeonsi: don't flush an empty IB if the only thing we need is a fence
...
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2015-07-05 15:08:59 +02:00
Marek Olšák
1f4bb38264
radeonsi: don't emit PA_SC_LINE_STIPPLE after every rasterizer state change
...
Do it only when the line stipple state is changed.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-03-16 12:54:19 +01:00
Marek Olšák
4f20a8f278
radeonsi: split sample locations into its own state atom
...
Sample locations are not updated as often as framebuffers.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-03-16 12:54:18 +01:00
Tom Stellard
2397a72129
radeonsi: Enable VGPR spilling for all shader types v5
...
v2:
- Only emit write SPI_TMPRING_SIZE once per packet.
- Use context global scratch buffer.
v3:
- Patch shaders using WRITE_DATA packet instead of map/unmap.
- Emit ICACHE_FLUSH, CS_PARTIAL_FLUSH, PS_PARTIAL_FLUSH, and
VS_PARTIAL_FLUSH when patching shaders.
v4:
- Code cleanups.
- Remove unnecessary multiplies.
v5:
- Patch shaders in system memory and re-upload to vram.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-01-28 21:03:47 +00:00
Marek Olšák
0aecf9e2d1
radeonsi: add a combined flag for flushing a framebuffer
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-01-07 12:06:43 +01:00
Marek Olšák
2bfe9d4538
radeonsi: rename flush flags, split the TC flag into L1 and L2
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-01-07 12:06:43 +01:00
Marek Olšák
638fa8016a
radeonsi: remove init config from states
...
It really doesn't do anything there.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-01-07 12:06:43 +01:00
Marek Olšák
3291eedfe6
radeonsi: only emit line stippling and provoking vertex state when it changes
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
834bee42ed
radeonsi: emit DRAW_PREAMBLE only if it changes
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
6fde194910
radeonsi: emit GS_OUT_PRIM_TYPE only if it changes
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
34350131de
radeonsi: emit primitive restart only if it changes
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
3382036946
radeonsi: emit base vertex and start instance only if they change
...
v2: added a helper function for invalidation of the sh constants
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
b472709090
radeonsi: emit clip registers only if VS, GS, or rasterizer is changed
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
c6546cfb03
radeonsi: remove useless variable si_context::pm4_dirty_cdwords
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-10 21:59:37 +01:00
Marek Olšák
837907b8b3
radeonsi: fix CS tracing and remove excessive CS dumping
2014-10-04 15:16:14 +02:00
Marek Olšák
884f1654e2
radeonsi: move DB registers from draw_vbo into new db_render_state
...
It's called db_misc_state in r600g.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-09-24 14:48:02 +02:00
Marek Olšák
1c03a690bf
radeonsi: use gpu_address from r600_resource
...
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2014-08-09 23:41:15 +02:00
Marek Olšák
be536efe20
radeonsi: mark MSAA config state as dirty at the beginning of CS
...
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81020
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2014-07-08 20:46:23 +02:00
Marek Olšák
86035cd88d
radeonsi: only count CS space for state atoms if we're going to draw
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-05-10 13:58:46 +02:00
Adam Jackson
74388dd24b
radeonsi: Don't use anonymous struct trick in atom tracking
...
I'm somewhat impressed that current gccs will let you do this, but
sufficiently old ones (including 4.4.7 in RHEL6) won't.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
2014-05-08 12:05:58 -04:00
Marek Olšák
352e06ddea
r600g,radeonsi: don't skip the context flush if a fence should be returned
...
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77589
2014-04-18 13:33:57 +02:00
Marek Olšák
11459436d9
r600g,radeonsi: share some of gfx flush code
...
Reviewed-by: Christian König <christian.koenig@amd.com>
2014-04-16 14:02:52 +02:00
Marek Olšák
d4edc60767
radeonsi: merge si_flush with si_context_flush
...
This also removes si_flush_gfx_ring.
Reviewed-by: Christian König <christian.koenig@amd.com>
2014-04-16 14:02:51 +02:00
Marek Olšák
70cf6639c3
gallium/radeon: create and return a fence in the flush function
...
All flush functions get a fence parameter. cs_create_fence is removed.
Reviewed-by: Christian König <christian.koenig@amd.com>
2014-04-16 14:02:51 +02:00