mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 15:50:17 +01:00
vulkan/wsi: propagate protected swapchain to images
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: José Roberto de Souza <None> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26182>
This commit is contained in:
parent
513ba040fc
commit
e722665d65
2 changed files with 16 additions and 2 deletions
|
|
@ -442,6 +442,7 @@ wsi_swapchain_init(const struct wsi_device *wsi,
|
|||
|
||||
vk_object_base_init(device, &chain->base, VK_OBJECT_TYPE_SWAPCHAIN_KHR);
|
||||
|
||||
chain->create_flags = pCreateInfo->flags;
|
||||
chain->wsi = wsi;
|
||||
chain->device = _device;
|
||||
chain->alloc = *pAllocator;
|
||||
|
|
@ -459,6 +460,9 @@ wsi_swapchain_init(const struct wsi_device *wsi,
|
|||
if (!chain->cmd_pools)
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
|
||||
const VkCommandPoolCreateFlags cmd_pool_flags =
|
||||
(pCreateInfo->flags & VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR) ?
|
||||
VK_COMMAND_POOL_CREATE_PROTECTED_BIT : 0;
|
||||
for (uint32_t i = 0; i < cmd_pools_count; i++) {
|
||||
int queue_family_index = i;
|
||||
|
||||
|
|
@ -476,7 +480,7 @@ wsi_swapchain_init(const struct wsi_device *wsi,
|
|||
const VkCommandPoolCreateInfo cmd_pool_info = {
|
||||
.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
|
||||
.pNext = NULL,
|
||||
.flags = 0,
|
||||
.flags = cmd_pool_flags,
|
||||
.queueFamilyIndex = queue_family_index,
|
||||
};
|
||||
result = wsi->CreateCommandPool(_device, &cmd_pool_info, &chain->alloc,
|
||||
|
|
@ -613,9 +617,13 @@ wsi_configure_image(const struct wsi_swapchain *chain,
|
|||
for (uint32_t i = 0; i < pCreateInfo->queueFamilyIndexCount; i++)
|
||||
queue_family_indices[i] = pCreateInfo->pQueueFamilyIndices[i];
|
||||
|
||||
const VkImageCreateFlags protected_flag =
|
||||
(pCreateInfo->flags & VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR) ?
|
||||
VK_IMAGE_CREATE_PROTECTED_BIT : 0;
|
||||
|
||||
info->create = (VkImageCreateInfo) {
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
|
||||
.flags = VK_IMAGE_CREATE_ALIAS_BIT,
|
||||
.flags = VK_IMAGE_CREATE_ALIAS_BIT | protected_flag,
|
||||
.imageType = VK_IMAGE_TYPE_2D,
|
||||
.format = pCreateInfo->imageFormat,
|
||||
.extent = {
|
||||
|
|
@ -1790,6 +1798,9 @@ wsi_create_buffer_blit_context(const struct wsi_swapchain *chain,
|
|||
const struct wsi_device *wsi = chain->wsi;
|
||||
VkResult result;
|
||||
|
||||
const VkBufferUsageFlags create_flags =
|
||||
(chain->create_flags & VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR) ?
|
||||
VK_BUFFER_CREATE_PROTECTED_BIT : 0;
|
||||
const VkExternalMemoryBufferCreateInfo buffer_external_info = {
|
||||
.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
|
||||
.pNext = NULL,
|
||||
|
|
@ -1798,6 +1809,7 @@ wsi_create_buffer_blit_context(const struct wsi_swapchain *chain,
|
|||
const VkBufferCreateInfo buffer_info = {
|
||||
.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
|
||||
.pNext = &buffer_external_info,
|
||||
.flags = create_flags,
|
||||
.size = info->linear_size,
|
||||
.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
|
||||
.sharingMode = VK_SHARING_MODE_EXCLUSIVE,
|
||||
|
|
|
|||
|
|
@ -173,6 +173,8 @@ struct wsi_swapchain {
|
|||
|
||||
const struct wsi_device *wsi;
|
||||
|
||||
VkSwapchainCreateFlagsKHR create_flags;
|
||||
|
||||
VkDevice device;
|
||||
VkAllocationCallbacks alloc;
|
||||
VkFence* fences;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue