mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 01:40:14 +01:00
anv: Implement VK_KHR_incremental_present
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
be1ecd8c6e
commit
0817110969
3 changed files with 15 additions and 2 deletions
|
|
@ -270,7 +270,11 @@ static const VkExtensionProperties device_extensions[] = {
|
|||
{
|
||||
.extensionName = VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
|
||||
.specVersion = 1,
|
||||
}
|
||||
},
|
||||
{
|
||||
.extensionName = VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME,
|
||||
.specVersion = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static void *
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ MAX_API_VERSION = 1.0
|
|||
SUPPORTED_EXTENSIONS = [
|
||||
'VK_KHR_descriptor_update_template',
|
||||
'VK_KHR_get_physical_device_properties2',
|
||||
'VK_KHR_incremental_present',
|
||||
'VK_KHR_maintenance1',
|
||||
'VK_KHR_push_descriptor',
|
||||
'VK_KHR_sampler_mirror_clamp_to_edge',
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include "anv_private.h"
|
||||
#include "wsi_common.h"
|
||||
#include "vk_format_info.h"
|
||||
#include "util/vk_util.h"
|
||||
|
||||
static const struct wsi_callbacks wsi_cbs = {
|
||||
.get_phys_device_format_properties = anv_GetPhysicalDeviceFormatProperties,
|
||||
|
|
@ -355,10 +356,17 @@ VkResult anv_QueuePresentKHR(
|
|||
ANV_FROM_HANDLE(anv_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++) {
|
||||
ANV_FROM_HANDLE(wsi_swapchain, swapchain, pPresentInfo->pSwapchains[i]);
|
||||
VkResult item_result;
|
||||
|
||||
const VkPresentRegionKHR *region = NULL;
|
||||
if (regions && regions->pRegions)
|
||||
region = ®ions->pRegions[i];
|
||||
|
||||
assert(anv_device_from_handle(swapchain->device) == queue->device);
|
||||
|
||||
if (swapchain->fences[0] == VK_NULL_HANDLE) {
|
||||
|
|
@ -381,7 +389,7 @@ VkResult anv_QueuePresentKHR(
|
|||
|
||||
item_result = swapchain->queue_present(swapchain,
|
||||
pPresentInfo->pImageIndices[i],
|
||||
NULL);
|
||||
region);
|
||||
/* TODO: What if one of them returns OUT_OF_DATE? */
|
||||
if (pPresentInfo->pResults != NULL)
|
||||
pPresentInfo->pResults[i] = item_result;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue