History log of /external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
1b2bcb6826ff8855e96117c9523821336a3be88a 10-Mar-2017 Julien Isorce <julien.isorce@gmail.com> winsys/radeon: check null return from radeon_cs_create_fence in cs_flush

Follow-up of patch:
"radeon_cs_create_fence: check null return from radeon_winsys_bo_create"

radeon_drm_cs_flush
radeon_cs_create_fence
radeon_winsys_bo_create

Signed-off-by: Julien Isorce <jisorce@oblong.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit d08c0930af8aaef5bdf80df618bb906e0b349830)
[Emil Velikov: resolve trivial conflicts]
Nominated-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>

Conflicts:
src/gallium/winsys/radeon/drm/radeon_drm_cs.c
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
99468c236f09211fcc4716efd400c039079c9a40 10-Mar-2017 Julien Isorce <julien.isorce@gmail.com> winsys/radeon: check null in radeon_cs_create_fence

Fixes the following segmentation fault:

radeon_drm_cs_add_buffer (bo=0x0) at radeon_drm_cs.c
-> if (!bo->handle)
(gdb) bt
0 radeon_drm_cs_add_buffer (bo=0x0) at radeon_drm_cs.c
1 0x00007fffe73575de in radeon_cs_create_fence radeon_drm_cs.c
2 0x00007fffe7358c48 in radeon_drm_cs_flush radeon_drm_cs.c

Signed-off-by: Julien Isorce <jisorce@oblong.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit d09edb01468ca385b6a8ffe29ac434dc42a78d07)
Nominated-by: Emil Velikov <emil.velikov@collabora.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
2b621c47aa515add6452a788c0c27067fc60be20 27-Dec-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: add new HUD query num-SDMA-IBs

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6b8a371e00b715b630418ced2ee867e7b2f36b11 27-Dec-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: rename the num-ctx-flushes query to num-GFX-IBs

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a1e391e39df2b1d8169e773a30153167ab8e13e8 12-Sep-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> winsys/radeon: add fine-grained fences for slab buffers

Note the logic for adding fences is somewhat different than for amdgpu,
because radeon has no scheduler and we therefore have no guarantee about
the order in which submissions from multiple threads are processed.

(Ironically, this is only an issue when "multi-threaded submission" is
disabled, because "multi-threaded submission" actually means that all
submissions happen from a single thread that happens to be separate from
the application's threads. If we only supported "multi-threaded
submission", the fence handling could be simplified by adding the fences
in that thread where everything is serialized.)

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
0edebde9a48ab609c636050208505885da363593 12-Sep-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> winsys/radeon: add slab buffer list

Introducing radeon_bo::hash will reduce collisions between "real" buffers
and buffers from slabs.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
cbb9c2f170e364054c644e013277ff95a6ad2f0a 09-Sep-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> winsys/radeon: separate adding a buffer from updating its reloc data

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6d89a4067627fdf568c6c4e3d9a201fd45d5352b 09-Sep-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> gallium/radeon: add RADEON_FLAG_HANDLE

When passed to winsys->buffer_create, this flag will indicate that we require
a buffer that maps 1:1 with a kernel buffer handle.

This is currently set for all textures, since textures can potentially be
exported to other processes. This is not a huge loss, since the main purpose
of this patch series is to deal with applications that allocate many small
buffers.

A hypothetical application with tons of tiny textures might still benefit
from not setting this flag, but that's not a use case I'm worried about
just now.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
b8703e363c7f949c7257c4ab1ab12c4663702dad 09-Sep-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> winsys/radeon: rename nrelocs, crelocs to max_relocs, num_relocs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
d66bbfbeded04cb728a2d8e4356c8e2b5e67ace1 09-Sep-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> winsys/radeon: don't pre-allocate the relocations array

It's really not necessary. Switch to an exponential resizing strategy.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
81da78bfc34bf0c55a72c496b6069c7a4da0ce20 09-Sep-2016 Marek Olšák <marek.olsak@amd.com> winsys/radeon: replace OUT_CS with radeon_emit

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
d0646cc7455df1678a129fa29d142f20f5252759 02-Aug-2016 Marek Olšák <marek.olsak@amd.com> winsys/radeon: implement cs_get_next_fence

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
c5ff0d3e65d499dcb466c151ed48cdf67e43cdbb 29-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: move radeon_winsys::cs_memory_below_limit to drivers

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
076db67217741aa820feadccc66067516d4cf4ca 29-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: inline radeon_winsys::query_memory_usage

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
9646ae77992f895b481984c9f8861cc64501a4eb 29-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon/winsyses: expose per-IB used_vram and used_gart to drivers

The following patches will use this.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
1c8f17599efe76239bc1cffef5db42e67cf4c900 29-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon/winsyses: print CS submission error number

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
1a1cc67edd4c1ae08b739adaf78e014b828908de 15-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: remove RADEON_FLUSH_KEEP_TILING_FLAGS flag

always set

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
44bbfedbd9983c61f6a461cbfe2e0dc74eda6d37 13-Jul-2016 Rob Clark <robdclark@gmail.com> gallium/u_queue: add optional cleanup callback

Adds a second optional cleanup callback, called after the fence is
signaled. This is needed if, for example, the queue has the last
reference to the object that embeds the util_queue_fence. In this
case we cannot drop the ref in the main callback, since that would
result in the fence being destroyed before it is signaled.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a7d84f7731b2095ed5dc4f741213fef60a55dcd3 13-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: add a return value to cs_flush

Required by our UVD code.

Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
ed3912d0daae717d70af9c595f1c36d817d9ceec 08-Jul-2016 Marek Olšák <marek.olsak@amd.com> radeonsi: just save buffer sizes instead of buffers while recording IBs

whole buffer objects are not needed

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
1c5a10497ab93495710989fe6c7dd1e776c51b05 21-Jun-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon/winsyses: boolean -> bool, TRUE -> true, FALSE -> false

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Vedran Miletić <vedran@miletic.net>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
cbb5adb90893a7c03f96f72f0665766a4007affd 11-Jun-2016 Marek Olšák <marek.olsak@amd.com> gallium/u_queue: allow the execute function to differ per job

so that independent types of jobs can use the same queue.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
404d0d50d8aaf60597668e65a2d7c96cdea53aea 11-Jun-2016 Marek Olšák <marek.olsak@amd.com> gallium/u_queue: add an option to have multiple worker threads

independent jobs don't have to be stuck on only one thread

v2: use CALLOC & FREE

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
d794072b3e1f27b96aaf2c476fcd5dcc5fd9d445 11-Jun-2016 Marek Olšák <marek.olsak@amd.com> winsys/radeon: use the common job queue for multithreaded command submission v2

v2: fixup after renaming to util_queue_fence

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
89ba076de4c8cfa171365700e6a3b017d5e3eeff 07-May-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> radeon/winsys: introduce radeon_winsys_cs_chunk

We will chain multiple chunks together and will keep pointers to the older
chunks to support IB dumping.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
46ad3561be0b820333a515941bfb220591402573 06-May-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> radeon/winsys: add cs_check_space

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
47b390fe45e5e6f982c60b58985892438959cd8e 17-May-2016 Jan Vesely <jano.vesely@gmail.com> Treewide: Remove Elements() macro

Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
60946c0d60610b03bc297df17ec7a3cca1e5f6e8 30-Apr-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: add a heuristic for better (S)DMA performance

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
77af6bcc26a7be938e05b784da2abf8740466618 28-Apr-2016 Marek Olšák <marek.olsak@amd.com> winsys/radeon: count buffer size only once

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
562c4a17b7e4fb56c7db679233b4a48f8b80b0f2 23-Apr-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> winsys/radeon: remove use_reusable_pool parameter from buffer_create

All callers set this parameter to true.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
f4b77c764a2469b20cfe49ec3ea3cca8e49dea92 08-Aug-2015 Marek Olšák <marek.olsak@amd.com> gallium/radeon: move ring_type into winsyses

Not used by drivers.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
8140154ae92c6bd022e409790bb069966a857aed 11-Mar-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: remove old CS tracing

Cons:
- it was only integrated in r600g
- it doesn't work with GPUVM
- it records buffer contents at the end of IBs instead of at the beginning,
so the replay isn't exact
- it lacks an IB parser and user-friendliness

A better solution is apitrace in combination with gallium/ddebug, which
has a complete IB parser and can pinpoint hanging CP packets.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
1e864d73799cfbcb29c4f22722b908bc39643347 30-Jan-2016 Marek Olšák <marek.olsak@amd.com> gallium/radeon: rename & reorder members of radeon_info

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
cf811faeff1eaa1aef817ae45314cc3419c44222 07-Dec-2015 Marek Olšák <marek.olsak@amd.com> gallium/radeon: remove radeon_winsys_cs_handle

"radeon_winsys_cs_handle *cs_buf" is now equivalent to "pb_buffer *buf".

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
eb55610c89af669f442418f32df6df60fc412867 27-Sep-2015 Marek Olšák <marek.olsak@amd.com> winsys/radeon: implement cs_get_buffer_list

This is more complicated, because tracking priority_usage needed changing
the relocs_bo type.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
93641f43416b8b8be8944e9d1473369bfda7f302 27-Sep-2015 Marek Olšák <marek.olsak@amd.com> gallium/radeon: stop using "reloc" in a few places

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
2edb0606397d16fe88d7b488285df379aaae5893 26-Sep-2015 Marek Olšák <marek.olsak@amd.com> gallium/radeon: tell the winsys the exact resource binding types

Use the priority flags and expand them.
This information will be used for debugging.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
8a9ab86ca6d510763bfe8532071c5fcfd977e3c4 30-Aug-2015 Marek Olšák <marek.olsak@amd.com> winsys/radeon: add a flag telling how gfx IBs should be padded

This is always false on amdgpu (set by calloc).

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
e321596e9f66207cc679b4ddbee13d4c8cdb896f 22-Aug-2015 Marek Olšák <marek.olsak@amd.com> winsys/radeon: handle non-zero finite timeout when waiting for buffers

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a83c36b5c0c64c717ced76db89bab900006648aa 23-Aug-2015 Marek Olšák <marek.olsak@amd.com> Revert "radeon/winsys: increase the IB size for VM"

This reverts commit 567394112d904096abff1d994ab952f475dfb444.

It regressed performance. It looks like smaller IBs are better, because
the GPU goes idle quicker and there is less waiting for buffers and fences.

Cc: 11.0 <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
2eb067db0febcd71b4182153155e3e43f215624c 16-Apr-2015 Marek Olšák <marek.olsak@amd.com> winsys/amdgpu: add a new winsys for the new kernel driver

v2: - lots of changes according to Emil Velikov's comments
- implemented radeon_winsys::read_registers

v3: - a lot of new work, many of them adapt to libdrm interface changes
Squashed patches:
winsys/amdgpu: implement radeon_winsys context support
winsys/amdgpu: add reference counting for contexts
winsys/amdgpu: add userptr support
winsys/amdgpu: allocate IBs like normal buffers
winsys/amdgpu: add IBs to the buffer list, adapt to interface changes
winsys/amdgpu: don't use KMS handles as reloc hash keys
winsys/amdgpu: sync buffer accesses to different rings
winsys/amdgpu: use dependencies instead of waiting for last fence v2
gallium/radeon: unify buffer_wait and buffer_is_busy in the winsys interface (amdgpu part)
winsys/amdgpu: track fences per ring and be thread-safe
winsys/amdgpu: simplify waiting on a variable in amdgpu_fence_wait
gallium/radeon: allow the winsys to choose the IB size (amdgpu part)
winsys/amdgpu: switch to new amdgpu_cs_query_fence_status interface
winsys/amdgpu: handle fence and dependencies merge
winsys/amdgpu follow libdrm change to move user fence into UMD
winsys/amdgpu: use amdgpu_bo_va_op for va map/unmap v2
winsys/amdgpu: use the new tiling flags
winsys/amdgpu: switch to new GTT_USWC definition
winsys/amdgpu: expose amdgpu_cs_query_reset_state to drivers
winsys/amdgpu: fix valgrind warnings
winsys/amdgpu: don't use VRAM with APUs that don't have much of it
winsys/amdgpu: require LLVM 3.6.1 for VI because of bug fixes there
winsys/amdgpu: remove amdgpu_winsys::num_cpus
winsys/amdgpu: align BO size to page size
winsys/amdgpu: reduce BO cache timeout
winsys/amdgpu: remove useless flushing and waiting in amdgpu_bo_set_tiling
winsys/amdgpu: use amdgpu_device_handle as a unique device ID instead of fd
winsys/amdgpu: use safer access to amdgpu_fence_wait::signalled
winsys/amdgpu: allow maximum IB size of 4 MB
winsys/amdgpu: add ip_instance into amdgpu_fence
gallium/radeon: add RING_COMPUTE instead of RADEON_FLUSH_COMPUTE
winsys/amdgpu: set the ring type at CS initilization
winsys/amdgpu: query the GART page size from the kernel
winsys/amdgpu: correctly wait for shared buffers to become idle
winsys/amdgpu: set the amdgpu_cs_fence structure only once at fence creation
winsys/amdgpu: add a specific error message for cs_submit -> -ENOMEM
winsys/amdgpu: check num_active_ioctls before calling amdgpu_bo_wait_for_idle
winsys/amdgpu: clear user fence BO after allocating it
winsys/amdgpu: fix user fences
winsys/amdgpu: make amdgpu_winsys_create public
winsys/amdgpu: remove thread offloading
winsys/amdgpu: flatten the amdgpu_cs_context structure and simplify more

v4: require libdrm 2.4.63
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6dea2456ca82d2c62afbd90327d265c5e78fca9c 15-Jul-2015 Marek Olšák <marek.olsak@amd.com> winsys/radeon: add a specific error message for cs_submit -> -ENOMEM

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
42d9f6323a523d786fc3797587fdf63048becceb 30-Apr-2015 Marek Olšák <marek.olsak@amd.com> winsys/radeon: add an interface for contexts

Same idea as in libdrm_amdgpu.

A command stream can only be created for a specific context and it's always
submitted to that context.

This will mainly be used by amdgpu and it's required by the GPU reset status
query too.
(radeon only has a basic version of the query and thus doesn't need this)

Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
592ce6e2d1b2c804a95cb00c06e7bbb9d83f554b 06-Aug-2015 Marek Olšák <marek.olsak@amd.com> gallium/radeon: unify buffer_wait and buffer_is_busy in the winsys interface

The timeout parameter covers both cases.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
c2a5d1dcb14acbd2db4a674453a8622d4b9a572a 02-Aug-2015 Marek Olšák <marek.olsak@amd.com> winsys/radeon: loosen up the requirements for how much memory IBs can use

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
567394112d904096abff1d994ab952f475dfb444 31-Jul-2015 Marek Olšák <marek.olsak@amd.com> radeon/winsys: increase the IB size for VM

Luckily, there is a kernel query, so use the size from that.
It currently returns 256KB. It can be increased in the kernel.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
d587742650c262dea8007474b9956fd65472f8b2 27-Jun-2015 Marek Olšák <marek.olsak@amd.com> 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>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9 21-Jul-2015 Ilia Mirkin <imirkin@alum.mit.edu> gallium: replace INLINE with inline

Generated by running:
git grep -l INLINE src/gallium/ | xargs sed -i 's/\bINLINE\b/inline/g'
git grep -l INLINE src/mesa/state_tracker/ | xargs sed -i 's/\bINLINE\b/inline/g'
git checkout src/gallium/state_trackers/clover/Doxyfile

and manual edits to
src/gallium/include/pipe/p_compiler.h
src/gallium/README.portability

to remove mentions of the inline define.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
64c379a3a8e397bf949705efecfc745ec4d7a843 13-Aug-2014 Andreas Boll <andreas.boll.dev@gmail.com> winsys/radeon: fix hawaii accel_working2 comment

accel_working2 returns 3 if the new firmware is used.

The comment wasn't updated in v3 of commit:
36771dc winsys/radeon: fix nop packet padding for hawaii

Signed-off-by: Andreas Boll <andreas.boll.dev@gmail.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
36771dc60fc3934b326eeff4aa6d3a4d438222eb 04-Aug-2014 Andreas Boll <andreas.boll.dev@gmail.com> winsys/radeon: fix nop packet padding for hawaii

The initial firmware for hawaii does not support type3 nop packet.
Detect the new hawaii firmware with query RADEON_INFO_ACCEL_WORKING2.
If the returned value is 3, then the new firmware is used.

This patch uses type2 for the old firmware and type3 for the new firmware.

It fixes the cases when the old firmware is used and the user wants to
manually enable acceleration.
The two possible scenarios are:
- the kernel has no support for the new firmware.
- the kernel has support for the new firmware but only the old firmware
is available.

Additionaly this patch disables GPU acceleration on hawaii if the kernel
returns a value < 2. In this case the kernel hasn't the required fixes
for proper acceleration.

v2:
- Fix indentation
- Use private struct radeon_drm_winsys instead of public struct radeon_info
- Rename r600_accel_working2 to accel_working2

v3:
- Use type2 nop packet for returned value < 3

v4:
- Fail to initialize winsys for returned value < 2

Cc: mesa-stable@lists.freedesktop.org
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Marek Olšák <marek.olsak@amd.com>
Cc: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Andreas Boll <andreas.boll.dev@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
cce58147eb1450a26c03756af37da52d180580c4 24-Jul-2014 Jerome Glisse <jglisse@redhat.com> winsys/radeon: fix indentation

Can we please keep it clean and avoid ending up in messy situation
like ddx.

Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
07c65b85eada8dd34019763b6e82ed4257a9b4a6 19-Jun-2014 Michel Dänzer <michel.daenzer@amd.com> r600g/radeonsi: Use write-combined CPU mappings of some BOs in GTT

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
8b966bcaf23b3f6267b4e7ff4f47e7638dff32a9 14-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: remove is_handle_added array

Use index -1 if a buffer is not added.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
b0fca0a37859bb9ba51d2a1ec2f3c442d8780fe3 14-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: remove local variable reloc from radeon_get_reloc

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
3384a41aa9fae6f36205360ac846b1e2ea615cfd 14-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: remove parameter reloc from radeon_get_reloc

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
70cf6639c331342619e65c46db925d115bf51920 12-Apr-2014 Marek Olšák <marek.olsak@amd.com> 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>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
dd72c327e967e0df7d5c59d6cde1a431e09e488e 11-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: fold cs_set_flush_callback into cs_create

Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
b2238b3452b0bcf3c1216c20c9918f9f0664b464 11-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: remove cs_write_reloc, add simpler cs_get_reloc

The only difference is that it doesn't write to the CS and only returns
the index.

Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
927213f33d0379c34033048d24592715d3f7ef96 11-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: consolidate hash table lookup

I should have done this long ago.

Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
34564c875357a5d0a1f103f29949eafc2f8e1b35 04-Apr-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: remove definitions already present in radeon_drm.h

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
fb5cf3490ebbc173211b6c04c869e3fb9f4dbecc 12-Feb-2014 Marek Olšák <marek.olsak@amd.com> r600g,radeonsi: add a bunch of useful queries for the HUD
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
e914d0052f4f195681b1a610b41c148bf351e336 16-Mar-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: only add duplicate relocations for DMA if VM isn't supported

Also rewrite the comment for it to be readable and reorder the code.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
3edb3b86b26627e03f31945ebc1f98e5394dec1f 20-Feb-2014 Marek Olšák <marek.olsak@amd.com> r300g,uvd,vce: set priorities for relocations

This updates all occurences of cs_add_reloc.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
db1a7f78c2653f0cb385af363ed1c770cb1c55c9 20-Feb-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: add interface for setting a priority number for each relocation

The cs_add_reloc change is commented out not to break compilation.
The highest priority of all cs_add_reloc calls is send to the kernel.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
c1a06da4653b7bb8c0418bfbfa6cf46cc1aad2e8 08-Mar-2014 Marek Olšák <marek.olsak@amd.com> Revert "winsys/radeon: if there's VRAM-only usage, keep it"

This reverts commit 67aef6dafa29fed008ea6065c425a6a92a651be9.

It caused GPU hangs. The question is why.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75900
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
67aef6dafa29fed008ea6065c425a6a92a651be9 09-Feb-2014 Marek Olšák <marek.olsak@amd.com> winsys/radeon: if there's VRAM-only usage, keep it
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
cbdd052577e798e0cd7b39eb75cfebee406f8410 08-Jul-2013 Christian König <christian.koenig@amd.com> radeon/winsys: add VCE support v4

v2: add fw version query
v3: add README.VCE
v4: avoid error msg when kernel doesn't support it

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
900ac63ee88a16b7fb7f0ca2b03a40259b8ebd84 18-Dec-2013 Niels Ole Salscheider <niels_ole@salscheider-online.de> winsys/radeon: remove superfluous distinction of cases

Signed-off-by: Niels Ole Salscheider <niels_ole@salscheider-online.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
5e438194757fb7e013ea039dfddd75ae469d8164 30-Oct-2013 Marek Olšák <marek.olsak@amd.com> winsys/radeon: use type-3 NOPs for CS padding on CIK

The type-2 NOPs are said to be unstable. It doesn't make a difference here.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6067a30838535c838262a9229b400afe4d92c184 08-Oct-2013 Marek Olšák <marek.olsak@amd.com> winsys/radeon: add the implementation of fences from r300g
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
8bc7673ef874faa95d43c255c7fc631c2d2160c0 07-Oct-2013 Christian König <christian.koenig@amd.com> radeon/winsys: fix handling in radeon_drm_cs_flush v2

Calling radeon_drm_cs_flush from multiple threads might cause deadlocks,
fix this by immediately signaling the semaphore after waiting for it.

This is a candidate for the stable branch(es).

Partially fixes: https://bugs.freedesktop.org/show_bug.cgi?id=70123

v2: some fixes on commit message

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
f9f14201c18fcb4ba73605e20f015c00e70c1cdd 22-Sep-2013 Christian König <christian.koenig@amd.com> radeon/uvd: move alignment to winsys

Similar to GFX and DMA.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
0653c66ef40ac553f91b29bbda7f59f7ce6948fa 21-Sep-2013 Christian König <christian.koenig@amd.com> winsys/radeon: remove cs_queue_empty

Waiting for an empty queue is nonsense and can lead to deadlocks if we have
multiple waiters or another thread that continuously sends down new commands.

Just post the cs to the queue and immediately wait for it to finish.

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a81beee37e0dd7b75422448420e8e8b0b4b76c1e 06-Sep-2013 Alex Deucher <alexander.deucher@amd.com> radeon/winsys: pad IBs to a multiple of 8 DWs

This aligns the gfx, compute, and dma IBs to 8 DW boundries.
This aligns the the IB to the fetch size of the CP for optimal
performance. Additionally, r6xx hardware requires at least 4
DW alignment to avoid a hw bug. This also aligns the DMA
IBs to 8 DW which is required for the DMA engine. This
alignment is already handled in the gallium driver, but that
patch can be removed now that it's done in the winsys.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
CC: "9.2" <mesa-stable@lists.freedesktop.org>
CC: "9.1" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
abb96fdea70546f974ba59cbd00bc54afee9cfdb 24-Apr-2013 Jerome Glisse <jglisse@redhat.com> winsys/radeon: consolidate tracing into winsys v2

This move the tracing timeout and printing into winsys and add
an debug environement variable for it (R600_DEBUG=trace_cs).

Lot of file touched because of winsys API changes.

v2: Do not write lockup file if ib uniq id does not match last one

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
f91e4d2c9d714bb7d667956cd93f216c18a434f4 08-Apr-2013 Christian König <christian.koenig@amd.com> radeon/winsys: add uvd ring support to winsys v3

Separated from UVD patch for clarity.

v2: sync with next tree for 3.10
v3: as pointed out by Andreas Bool check for drm minor >= 32

http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-next-3.10-wip

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Andreas Boll <andreas.boll.dev@gmail.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
b8998f976ee11e5bdffa78cd78278deeed2789c1 27-Mar-2013 Jerome Glisse <jglisse@redhat.com> winsys/radeon: add command stream replay dump for faulty lockup v3

Build time option, set RADEON_CS_DUMP_ON_LOCKUP to 1 in radeon_drm_cs.h to
enable it.

When enabled after each cs submission the code will try to detect lockup by
waiting on one of the buffer of the cs to become idle, after a timeout it
will consider that the cs triggered a lockup and will write a radeon_lockup.c
file in current directory that have all information for replaying the cs.

To build this file :
gcc -O0 -g radeon_lockup.c -ldrm -o radeon_lockup -I/usr/include/libdrm

v2: Add radeon_ctx.h file to mesa git tree
v3: Slightly improve dumped file for easier editing, only dump first faulty cs

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
5e0c956cb219e54dfc22e64ac3f00e22619c763f 29-Jan-2013 Jerome Glisse <jglisse@redhat.com> r600g: add cs memory usage accounting and limit it v3

We are now seing cs that can go over the vram+gtt size to avoid
failing flush early cs that goes over 70% (gtt+vram) usage. 70%
is use to allow some fragmentation.

The idea is to compute a gross estimate of memory requirement of
each draw call. After each draw call, memory will be precisely
accounted. So the uncertainty is only on the current draw call.
In practice this gave very good estimate (+/- 10% of the target
memory limit).

v2: Remove left over from testing version, remove useless NULL
checking. Improve commit message.
v3: Add comment to code on memory accounting precision

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6c064fd7492ea835f873112bc3189bb1920aad32 07-Jan-2013 Jerome Glisse <jglisse@redhat.com> radeon/winsys: add dma ring support to winsys v3

Add ring support, you can create a cs for each ring. DMA ring is
bit special regarding relocation as you must emit as much relocation
as there is use of the buffer.

v2: - Improved comment on relocation changes
- Use a single thread to queue cs submittion this simplify driver
code while not impacting performances. Rational for this is that
you have to wait for all previous submission to have completed
so there was never a case while we could have 2 different thread
submitting a command stream at the same time. This code just
consolidate submission into one single thread per winsys.
v3: - Do not use semaphore for empty queue signaling, instead use
cond var. This is because it's tricky to maintain an even number
of call to semaphore wait and semaphore signal (the number of
cs in the stack would for instance make that number vary).

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
12aeb47b6af4b3100da26b3ab72ef93886479219 21-Dec-2012 Marek Olšák <maraeo@gmail.com> gallium/radeon: send the END_OF_FRAME flag to the DRM
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
9b0b4cf05840fd8dcc4973524166024f948a97ec 21-Dec-2012 Marek Olšák <maraeo@gmail.com> winsys/radeon: the env var RADEON_NOOP can be used to skip CS ioctls
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
9aa8bac98b823e8783bc3a06a6e5b23fbf8d87fb 19-Sep-2012 Vadim Girlin <vadimgirlin@gmail.com> winsys/radeon: fix relocs caching

Don't cache pointers to elements of reallocatable array.
In some circumstances it caused false cache hits resulting in incorrect
command stream and gpu lockup.

Note: This is a candidate for the stable branches.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
2b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405 04-Sep-2012 Matt Turner <mattst88@gmail.com> Don't cast the return value of malloc/realloc

This patch has been generated by the following Coccinelle semantic
patch:

// Don't cast the return value of malloc/realloc.
//
// Casting the return value of malloc/realloc only stands to hide
// errors.

@@
type T;
expression E1, E2;
@@
- (T)
(
_mesa_align_calloc(E1, E2)
|
_mesa_align_malloc(E1, E2)
|
calloc(E1, E2)
|
malloc(E1)
|
realloc(E1, E2)
)
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a7f4d3b740d4c85b0dc2b006c30c2bc4a3ed8597 04-Aug-2012 Marek Olšák <maraeo@gmail.com> winsys/radeon: print error if CS is overflowed

and don't submit the CS to the kernel.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
92af184690995d3b16731518f7becfaac3538edb 21-May-2012 Christian König <deathsimple@vodafone.de> winsys/radeon: enable IB submission to compute rings v2

This allows to submit things to the compute only
rings on cayman+

v2: rebased on current master and actually make use
of the new flag in evergreen_compute.c

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6bb0151f1fd87b4e15f177c7122fc28fea29497e 22-May-2012 Maarten Lankhorst <m.b.lankhorst@gmail.com> winsys/radeon: Remove unnecessary pipe_thread_destroy in radeon_drm_cs_destroy

Fixes crash bug introduced with 210ddf0819b5 fd.o #49198
pthread_detach after a pthread_join is unneeded.

Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
Signed-off-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
29e55bc5f1b6d7375b6a86e24ca4ae58e399011e 26-Feb-2012 Marek Olšák <maraeo@gmail.com> winsys/radeon: add usage parameter to cs_is_buffer_referenced

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
bb1f0cf3508630a9a93512c79badf8c493c46743 02-Dec-2011 Jerome Glisse <jglisse@redhat.com> r600g: add support for virtual address space on cayman v11

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 <jglisse@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
93f4e3cb6c1ca303ee1f5c2a2491a8eff33f2633 24-Dec-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: move managing GEM domains back to drivers

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.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
41b75dc92c921c078e64962f47b3d51b1e4f7b5a 25-Oct-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: add flush option not to rewrite tiling flags in registers

Not used yet.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
363ff844753c46ac9c13866627e096b091ea81f8 27-Sep-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: move GEM domains out of the drivers into winsys

The drivers don't need to care about the domains. All they need to set
are the bind and usage flags. This simplifies the winsys too.

This also fixes on r600g:
- fbo-depth-GL_DEPTH_COMPONENT32F-copypixels
- fbo-depth-GL_DEPTH_COMPONENT16-copypixels
- fbo-depth-GL_DEPTH_COMPONENT24-copypixels
- fbo-depth-GL_DEPTH_COMPONENT32-copypixels
- fbo-depth-GL_DEPTH24_STENCIL8-copypixels
I can't explain it.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
a3cd2c6c9b3724dbc3aa565dab98968c46bde963 27-Sep-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: remove redundant member radeon_bo::size

It's part of pb_buffer already.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
798ebc91ebe383a702faf597ffbf2033dc467f50 27-Sep-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: simplify updating GEM domains for relocations
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
210ddf0819b5acf87a614214b6d4b02193aafa4a 27-Aug-2011 Maarten Lankhorst <m.b.lankhorst@gmail.com> winsys/radeon: Create async thread only once

I noticed that a thread was created for every time async flush was called, so I moved it and used some semaphores to synch.

Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Signed-off-by: Christian König <deathsimple@vodafone.de>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
296b8990956fcbd7ce47902d7c108a5973db9397 07-Aug-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: remove broken bo-is-busy-for-write guessing

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
e2e1dc9e66ff348caa97b7b35e558d75c6cc6899 04-Aug-2011 Marek Olšák <maraeo@gmail.com> r600g: set the flush callback in radeon_winsys

I have also renamed the winsys function.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
03b25ad8ffd72f1f88b6c80a2ebfe3cf6e8a6390 04-Aug-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: consolidate the add_reloc function

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
e6fb62594fca714883af9bba9795be8838c16900 04-Aug-2011 Marek Olšák <maraeo@gmail.com> r600g: emit CS using radeon_winsys

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
638d75185e66727faaba5dc2df1b6e14c7c0c075 03-Aug-2011 Marek Olšák <maraeo@gmail.com> r600g: let radeon_winsys maintain the list of relocations

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
5b005ecc2b624a0ffb577ab760abacf069694f8d 03-Aug-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: do the CS cleanup in the CS ioctl thread
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
64ab39b035f755510a644643b96451431bbe5f27 03-Aug-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: fix space checking

We should remove the relocations which caused a validation failure
from the list, so that the kernel receives only the validated ones.

NOTE: This is a candidate for the 7.11 branch.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
28a336dc38c478b809544e7404c4d1fddd873333 22-Jul-2011 Marek Olšák <maraeo@gmail.com> winsys/radeon: simplify how value queries work

This drops the get_value query and adds a function query_info, which returns
all the values in one nice structure.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
d35aeff4bb0b03450b2c3c08bd7f84db5bf43283 18-Apr-2011 Marek Olšák <maraeo@gmail.com> r300g/winsys: rename r300->radeon and do a little cleanup

Renaming a few files, types, and functions.
Also make the winsys independent of r300g.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
aac4bae98651c928ce298aecf158b0aa1a7fabce 08-Apr-2011 Marek Olšák <maraeo@gmail.com> r300g: fix crash when adding a new relocation

No idea why it's so hard to reproduce.
Broken with: c35572352e3e92683988ee8d151b47f4190d62f9

Thanks to Toni Spets for assistance.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
9d5de0fcb6ced7a4da85a09ad25dcbc2b21bfdf9 07-Apr-2011 Marek Olšák <maraeo@gmail.com> r300g: add 'radeon: ' prefix to error messages in winsys
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6caac3ecb8bc32d92c35fdb1f0a67541ffa8af29 03-Apr-2011 Marek Olšák <maraeo@gmail.com> r300g: do not wait for a busy BO if neither GPU nor CPU is changing it

Improves frame rate in apps with at least one user vertex buffer and
a hw index buffer.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
c35572352e3e92683988ee8d151b47f4190d62f9 03-Apr-2011 Marek Olšák <maraeo@gmail.com> r300g: remove the redundant reference counter in radeon_bo

We already have pb_buffer::reference::count.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
5650a719f0c69c00954e47bd7a7b3e9433cb551d 08-Mar-2011 Marek Olšák <maraeo@gmail.com> r300g: decide whether a flush should be asynchronous when calling it

Thread offloading is not sometimes desirable, e.g. when mapping a buffer.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
f6dbcb92bf4a3597c7b3da890ffafc84951f25df 02-Mar-2011 Marek Olšák <maraeo@gmail.com> r300g: do not use ioctl thread offloading on single-core machines
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
e9e5380f22c230ea1276208baa40c3fe6482b296 19-Feb-2011 Marek Olšák <maraeo@gmail.com> r300g: fix invalid dereference in winsys

radeon_bo_unref may destroy the buffer, so call it after p_atomic_dec, not before.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
fa3f1348e49feeac511dbe5b22bbddc47f56ba81 16-Feb-2011 Marek Olšák <maraeo@gmail.com> r300g: fix a race between CS and SET_TILING ioctls
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
b9e2cde6006b557a3a23a82384899f4d5a5ac7b8 15-Feb-2011 Marek Olšák <maraeo@gmail.com> r300g: offload the CS ioctl to another thread

This is a multi-threading optimization which hides the kernel overhead
behind a thread. It improves performance in CPU-limited apps by 2-15%.
Of course you must have at least 2 cores for it to make any difference.

It can be disabled with:

export RADEON_THREAD=0
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
df54b53b7d12a3bca5867b6649cb308feb36f0da 11-Feb-2011 Marek Olšák <maraeo@gmail.com> r300g: improve function radeon_bo_is_referenced_by_cs

This should prevent calling into radeon_get_reloc when there's
only one context.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
6ccab620a0e7364ab6c0d902b3ddf58ee988f7fa 23-Dec-2010 Marek Olšák <maraeo@gmail.com> r300g: import the last bits of libdrm and cleanup the whole thing

Based on Dave's branch.

The majority of this commit is a cleanup, mainly renaming things.
There wasn't much code to import, just ioctl calls.

Also done:
- implemented unsynchronized bo_map (important optimization!)
- radeon_bo_is_referenced_by_cs is no longer a refcount hack
- dropped the libdrm_radeon dependency

I'm surprised that this has resulted in less code in the end.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
1f0348c4a2ba4f8ca812a2daccf3b01c3f984ef1 04-Dec-2010 Marek Olšák <maraeo@gmail.com> r300g: rework command submission and resource space checking

The motivation behind this rework is to get some speed by reducing
CPU overhead. The performance increase depends on many factors,
but it's measurable (I think it's about 10% increase in Torcs).

This commit replaces libdrm's radeon_cs_gem with our own implemention.
It's optimized specifically for r300g, but r600g could use it as well.
Reloc writes and space checking are faster and simpler than their
counterparts in libdrm (the time complexity of all the functions
is O(1) in nearly all scenarios, thanks to hashing).
(libdrm's radeon_bo_gem is still being used in the driver.)

It works like this:

cs_add_reloc(cs, buf, read_domain, write_domain) adds a new relocation and
also adds the size of 'buf' to the used_gart and used_vram winsys variables
based on the domains, which are simply or'd for the accounting purposes.
The adding is skipped if the reloc is already present in the list, but it
accounts any newly-referenced domains.

cs_validate is then called, which just checks:
used_vram/gart < vram/gart_size * 0.8
The 0.8 number allows for some memory fragmentation. If the validation
fails, the pipe driver flushes CS and tries do the validation again,
i.e. it validates only that one operation. If it fails again, it drops
the operation on the floor and prints some nasty message to stderr.

cs_write_reloc(cs, buf) just writes a reloc that has been added using
cs_add_reloc. The read_domain and write_domain parameters have been removed,
because we already specify them in cs_add_reloc.

The space checking has been tested by putting small values in vram/gart_size
variables.
/external/mesa3d/src/gallium/winsys/radeon/drm/radeon_drm_cs.c