[Mesa-dev] [PATCH] radv: reduce CPU overhead merging bo lists.
Bas Nieuwenhuizen
bas at basnieuwenhuizen.nl
Fri Feb 10 18:30:02 UTC 2017
Was thinking of a sort or other asymptotically more efficient merge
method, but in the meantime this is
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
On Fri, Feb 10, 2017, at 02:07, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> Just noticed we do a fair bit of unneeded searching here.
>
> Since we know that the buffers in a CS are unique already,
> the first time we get any buffers, we can just memcpy those into
> place, and when we are searching for subsequent CSes, we only
> have to search up until where the previous unique buffers were.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
> b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
> index b58f5db..9e468bd 100644
> --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
> +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
> @@ -486,9 +486,19 @@ static int radv_amdgpu_create_bo_list(struct
> radv_amdgpu_winsys *ws,
> else
> cs = (struct radv_amdgpu_cs*)cs_array[i];
>
> + if (!cs->num_buffers)
> + continue;
> +
> + if (unique_bo_count == 0) {
> + memcpy(handles, cs->handles,
> cs->num_buffers * sizeof(amdgpu_bo_handle));
> + memcpy(priorities, cs->priorities,
> cs->num_buffers * sizeof(uint8_t));
> + unique_bo_count = cs->num_buffers;
> + continue;
> + }
> + int unique_bo_so_far = unique_bo_count;
> for (unsigned j = 0; j < cs->num_buffers; ++j) {
> bool found = false;
> - for (unsigned k = 0; k < unique_bo_count;
> ++k) {
> + for (unsigned k = 0; k <
> unique_bo_so_far; ++k) {
> if (handles[k] == cs->handles[j]) {
> found = true;
> priorities[k] = MAX2(priorities[k],
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list