Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
On Thu, Jun 8, 2017 at 9:04 PM, Dave Airlie <airl...@gmail.com> wrote: > From: Dave Airlie <airl...@redhat.com> > > We have some features that seem to slow things down or cause other > possible undesireable side effects, but it would be nice to test > games etc with them easily. > > I forsee multisample DCC and maybe some shader opt changes using this. > > For now use it for batch chaining. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/amd/vulkan/radv_debug.h | 3 +++ > src/amd/vulkan/radv_device.c | 11 ++++++++++- > src/amd/vulkan/radv_private.h | 1 + > src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 2 +- > src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 3 ++- > src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h | 1 + > src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys_public.h | 3 ++- > 7 files changed, 20 insertions(+), 4 deletions(-) > > diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h > index 4d1398e..c986c7b 100644 > --- a/src/amd/vulkan/radv_debug.h > +++ b/src/amd/vulkan/radv_debug.h > @@ -37,4 +37,7 @@ enum { > RADV_DEBUG_NO_IBS = 0x200, > }; > > +enum { > + RADV_PERFTEST_BATCHCHAIN = 0x1, > +}; > #endif > diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c > index 3b32bf5..63135db 100644 > --- a/src/amd/vulkan/radv_device.c > +++ b/src/amd/vulkan/radv_device.c > @@ -274,7 +274,8 @@ radv_physical_device_init(struct radv_physical_device > *device, > assert(strlen(path) < ARRAY_SIZE(device->path)); > strncpy(device->path, path, ARRAY_SIZE(device->path)); > > - device->ws = radv_amdgpu_winsys_create(fd, instance->debug_flags); > + device->ws = radv_amdgpu_winsys_create(fd, instance->debug_flags, > + instance->perftest_flags); > if (!device->ws) { > result = VK_ERROR_INCOMPATIBLE_DRIVER; > goto fail; > @@ -371,6 +372,11 @@ static const struct debug_control radv_debug_options[] = > { > {NULL, 0} > }; > > +static const struct debug_control radv_perftest_options[] = { > + {"batchchain", RADV_PERFTEST_BATCHCHAIN}, > + {NULL, 0} > +}; > + > VkResult radv_CreateInstance( > const VkInstanceCreateInfo* pCreateInfo, > const VkAllocationCallbacks* pAllocator, > @@ -428,6 +434,9 @@ VkResult radv_CreateInstance( > instance->debug_flags = parse_debug_string(getenv("RADV_DEBUG"), > radv_debug_options); > > + instance->perftest_flags = parse_debug_string(getenv("RADV_PERFTEST"), > + radv_perftest_options); > + > *pInstance = radv_instance_to_handle(instance); > > return VK_SUCCESS; > diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h > index c21b17e..87cb0a6 100644 > --- a/src/amd/vulkan/radv_private.h > +++ b/src/amd/vulkan/radv_private.h > @@ -288,6 +288,7 @@ struct radv_instance { > struct radv_physical_device > physicalDevices[RADV_MAX_DRM_DEVICES]; > > uint64_t debug_flags; > + uint64_t perftest_flags; > }; > > VkResult radv_init_wsi(struct radv_physical_device *physical_device); > diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c > b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c > index 5ea1218..7b74970 100644 > --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c > +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c > @@ -931,7 +931,7 @@ static int radv_amdgpu_winsys_cs_submit(struct > radeon_winsys_ctx *_ctx, > if (!cs->ws->use_ib_bos) { > ret = radv_amdgpu_winsys_cs_submit_sysmem(_ctx, queue_idx, > cs_array, > cs_count, > initial_preamble_cs, continue_preamble_cs, _fence); > - } else if (can_patch && cs_count > AMDGPU_CS_MAX_IBS_PER_SUBMIT && > false) { > + } else if (can_patch && cs_count > AMDGPU_CS_MAX_IBS_PER_SUBMIT && > cs->ws->batchchain) { > ret = radv_amdgpu_winsys_cs_submit_chained(_ctx, queue_idx, > cs_array, > cs_count, > initial_preamble_cs, continue_preamble_cs, _fence); > } else { > diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c > b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c > index bce8dd2..c7688cf 100644 > --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c > +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c > @@ -82,7 +82,7 @@ static void radv_amdgpu_winsys_destroy(struct radeon_winsys > *rws) > } > > struct radeon_winsys * > -radv_amdgpu_winsys_create(int fd, uint32_t debug_flags) > +radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t > perftest_flags) > { > uint32_t drm_major, drm_minor, r; > amdgpu_device_handle dev; > @@ -106,6 +106,7 @@ radv_amdgpu_winsys_create(int fd, uint32_t debug_flags) > if (debug_flags & RADV_DEBUG_NO_IBS) > ws->use_ib_bos = false; > > + ws->batchchain = !!(perftest_flags & RADV_PERFTEST_BATCHCHAIN); > LIST_INITHEAD(&ws->global_bo_list); > pthread_mutex_init(&ws->global_bo_list_lock, NULL); > ws->base.query_info = radv_amdgpu_winsys_query_info; > diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h > b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h > index 59e2730..426cf69 100644 > --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h > +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h > @@ -43,6 +43,7 @@ struct radv_amdgpu_winsys { > ADDR_HANDLE addrlib; > > bool debug_all_bos; > + bool batchchain; > pthread_mutex_t global_bo_list_lock; > struct list_head global_bo_list; > unsigned num_buffers; > diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys_public.h > b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys_public.h > index d5d0ff5..854e216 100644 > --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys_public.h > +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys_public.h > @@ -29,6 +29,7 @@ > #ifndef RADV_AMDGPU_WINSYS_PUBLIC_H > #define RADV_AMDGPU_WINSYS_PUBLIC_H > > -struct radeon_winsys *radv_amdgpu_winsys_create(int fd, uint32_t > debug_flags); > +struct radeon_winsys *radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, > + uint64_t perftest_flags); > > #endif /* RADV_AMDGPU_WINSYS_PUBLIC_H */ > -- > 2.9.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev