[Mesa-dev] [PATCH] radv: Enable VK_KHR_incremental_present.
Jason Ekstrand
jason at jlekstrand.net
Mon Apr 3 20:35:46 UTC 2017
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On April 3, 2017 12:36:16 PM Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl> wrote:
> Just enabling the driver-independent implementation that Jason did.
>
> Signed-off-by: Bas Nieuwenhuizen <basni at google.com>
> ---
> src/amd/vulkan/radv_device.c | 4 ++++
> src/amd/vulkan/radv_entrypoints_gen.py | 1 +
> src/amd/vulkan/radv_wsi.c | 11 ++++++++++-
> 3 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
> index 5c48be1d11a..6456eb17f56 100644
> --- a/src/amd/vulkan/radv_device.c
> +++ b/src/amd/vulkan/radv_device.c
> @@ -92,6 +92,10 @@ static const VkExtensionProperties instance_extensions[] = {
>
> static const VkExtensionProperties common_device_extensions[] = {
> {
> + .extensionName = VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME,
> + .specVersion = 1,
> + },
> + {
> .extensionName = VK_KHR_MAINTENANCE1_EXTENSION_NAME,
> .specVersion = 1,
> },
> diff --git a/src/amd/vulkan/radv_entrypoints_gen.py
> b/src/amd/vulkan/radv_entrypoints_gen.py
> index b7b2bcf97e4..bee29dc1202 100644
> --- a/src/amd/vulkan/radv_entrypoints_gen.py
> +++ b/src/amd/vulkan/radv_entrypoints_gen.py
> @@ -31,6 +31,7 @@ supported_extensions = [
> 'VK_AMD_draw_indirect_count',
> 'VK_NV_dedicated_allocation',
> 'VK_KHR_get_physical_device_properties2',
> + 'VK_KHR_incremental_present',
> 'VK_KHR_maintenance1',
> 'VK_KHR_sampler_mirror_clamp_to_edge',
> 'VK_KHR_shader_draw_parameters',
> diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
> index 8b66095b263..b8999f4eb02 100644
> --- a/src/amd/vulkan/radv_wsi.c
> +++ b/src/amd/vulkan/radv_wsi.c
> @@ -26,6 +26,7 @@
> #include "radv_private.h"
> #include "radv_meta.h"
> #include "wsi_common.h"
> +#include "util/vk_util.h"
>
> static const struct wsi_callbacks wsi_cbs = {
> .get_phys_device_format_properties = radv_GetPhysicalDeviceFormatProperties,
> @@ -452,9 +453,14 @@ VkResult radv_QueuePresentKHR(
> RADV_FROM_HANDLE(radv_queue, queue, _queue);
> VkResult result = VK_SUCCESS;
>
> + const VkPresentRegionsKHR *regions =
> + vk_find_struct_const(pPresentInfo->pNext, PRESENT_REGIONS_KHR);
> +
> for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
> RADV_FROM_HANDLE(wsi_swapchain, swapchain, pPresentInfo->pSwapchains[i]);
> struct radeon_winsys_cs *cs;
> + const VkPresentRegionKHR *region = NULL;
> +
> assert(radv_device_from_handle(swapchain->device) == queue->device);
> if (swapchain->fences[0] == VK_NULL_HANDLE) {
> result = radv_CreateFence(radv_device_to_handle(queue->device),
> @@ -484,9 +490,12 @@ VkResult radv_QueuePresentKHR(
> pPresentInfo->waitSemaphoreCount, NULL, 0, false, base_fence);
> fence->submitted = true;
>
> + if (regions && regions->pRegions)
> + region = ®ions->pRegions[i];
> +
> result = swapchain->queue_present(swapchain,
> pPresentInfo->pImageIndices[i],
> - NULL);
> + region);
> /* TODO: What if one of them returns OUT_OF_DATE? */
> if (result != VK_SUCCESS)
> return result;
> --
> 2.12.1
>
> _______________________________________________
> 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