Monado OpenXR Runtime
|
Flags helpers for compositor swapchain images. More...
#include "xrt/xrt_handles.h"
#include "util/u_misc.h"
#include "util/u_debug.h"
#include "vk/vk_helpers.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Macros | |
#define | CASE_COLOR(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; |
#define | CASE_DS(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; |
#define | CASE_COLOR(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_COLOR_BIT; |
#define | CASE_DS(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; |
#define | CASE_D(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_DEPTH_BIT; |
#define | CASE_S(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_STENCIL_BIT; |
#define | CASE_COLOR(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_COLOR_BIT; |
#define | CASE_DS(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_DEPTH_BIT; |
#define | CASE_D(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_DEPTH_BIT; |
#define | CASE_S(FORMAT) case VK_FORMAT_##FORMAT: return VK_IMAGE_ASPECT_STENCIL_BIT; |
#define | TEST(XRT_BIT, VK_FORMAT_BIT, VK_USAGE_BIT) |
Functions | |
static bool | check_feature (VkFormat format, enum xrt_swapchain_usage_bits usage, VkFormatFeatureFlags format_features, VkFormatFeatureFlags flag) |
VkExternalMemoryHandleTypeFlags | vk_cb_get_buffer_external_handle_type (struct vk_bundle *vk) |
Return the extern handle type that a buffer should be created with. More... | |
VkAccessFlags | vk_csci_get_barrier_access_mask (enum xrt_swapchain_usage_bits bits) |
Returns the access flags for the compositor to app barriers. More... | |
VkImageLayout | vk_csci_get_barrier_optimal_layout (VkFormat format) |
Return the optimal layout for this format, this is the layout as given to the app so is bound to the OpenXR spec. More... | |
VkImageAspectFlags | vk_csci_get_barrier_aspect_mask (VkFormat format) |
Return the barrier aspect mask for this format, this is intended for the barriers that flush the data out before and after transfers between the application and compositor. More... | |
VkImageAspectFlags | vk_csci_get_image_view_aspect (VkFormat format, enum xrt_swapchain_usage_bits bits) |
For images views created by the compositor to sample the images, what aspect should be set. More... | |
VkImageUsageFlags | vk_csci_get_image_usage_flags (struct vk_bundle *vk, VkFormat format, enum xrt_swapchain_usage_bits bits) |
Returns the usage bits for a given selected format and usage. More... | |
VkExternalMemoryHandleTypeFlags | vk_csci_get_image_external_handle_type (struct vk_bundle *vk, struct xrt_image_native *xin) |
Return the extern handle type that a image should be created with. More... | |
void | vk_csci_get_image_external_support (struct vk_bundle *vk, VkFormat image_format, enum xrt_swapchain_usage_bits bits, VkExternalMemoryHandleTypeFlags handle_type, bool *out_importable, bool *out_exportable) |
Get whether a given image can be imported/exported for a handle type. More... | |
bool | vk_csci_is_format_supported (struct vk_bundle *vk, VkFormat format, enum xrt_swapchain_usage_bits xbits) |
Verify if a format is supported for a specific usage. More... | |
Flags helpers for compositor swapchain images.
These functions all concern only the compositor swapchain images that are shared between the compositor and the application. That's why they are grouped together and they are here because they need to be shared between the vk_image_collection and comp_swapchain code so that they apply the same flags everywhere.
CSCI = Compositor SwapChain Images.
#define TEST | ( | XRT_BIT, | |
VK_FORMAT_BIT, | |||
VK_USAGE_BIT | |||
) |
VkExternalMemoryHandleTypeFlags vk_cb_get_buffer_external_handle_type | ( | struct vk_bundle * | vk | ) |
Return the extern handle type that a buffer should be created with.
cb = Compositor Buffer.
Referenced by render_buffer_init_exportable().
VkAccessFlags vk_csci_get_barrier_access_mask | ( | enum xrt_swapchain_usage_bits | bits | ) |
Returns the access flags for the compositor to app barriers.
CSCI = Compositor SwapChain Images.
VkImageAspectFlags vk_csci_get_barrier_aspect_mask | ( | VkFormat | format | ) |
Return the barrier aspect mask for this format, this is intended for the barriers that flush the data out before and after transfers between the application and compositor.
CSCI = Compositor SwapChain Images.
References VK_CSCI_FORMATS.
VkImageLayout vk_csci_get_barrier_optimal_layout | ( | VkFormat | format | ) |
Return the optimal layout for this format, this is the layout as given to the app so is bound to the OpenXR spec.
CSCI = Compositor SwapChain Images.
References VK_CSCI_FORMATS.
VkExternalMemoryHandleTypeFlags vk_csci_get_image_external_handle_type | ( | struct vk_bundle * | vk, |
struct xrt_image_native * | xin | ||
) |
Return the extern handle type that a image should be created with.
CSCI = Compositor SwapChain Images.
References xrt_image_native::is_dxgi_handle.
Referenced by vk_create_image_from_native().
void vk_csci_get_image_external_support | ( | struct vk_bundle * | vk, |
VkFormat | image_format, | ||
enum xrt_swapchain_usage_bits | bits, | ||
VkExternalMemoryHandleTypeFlags | handle_type, | ||
bool * | out_importable, | ||
bool * | out_exportable | ||
) |
Get whether a given image can be imported/exported for a handle type.
CSCI = Compositor SwapChain Images.
References vk_csci_get_image_usage_flags().
Referenced by vk_create_image_from_native().
VkImageUsageFlags vk_csci_get_image_usage_flags | ( | struct vk_bundle * | vk, |
VkFormat | format, | ||
enum xrt_swapchain_usage_bits | bits | ||
) |
Returns the usage bits for a given selected format and usage.
For color formats always adds:
VK_IMAGE_USAGE_SAMPLED_BIT
for compositor reading in shaders.For depth & stencil formats always adds:
VK_IMAGE_USAGE_SAMPLED_BIT
for compositor reading in shaders.For depth formats always adds:
VK_IMAGE_USAGE_SAMPLED_BIT
for compositor reading in shaders.For stencil formats always adds:
VK_IMAGE_USAGE_SAMPLED_BIT
for compositor reading in shaders.CSCI = Compositor SwapChain Images.
Referenced by vk_create_image_from_native(), and vk_csci_get_image_external_support().
VkImageAspectFlags vk_csci_get_image_view_aspect | ( | VkFormat | format, |
enum xrt_swapchain_usage_bits | bits | ||
) |
For images views created by the compositor to sample the images, what aspect should be set.
For color it's the color, for depth and stencil it's only depth as both are disallowed by the Vulkan spec, for depth only depth, and for stencil only it's stencil.
CSCI = Compositor SwapChain Images.
References VK_CSCI_FORMATS.
Referenced by do_post_create_vulkan_setup().
bool vk_csci_is_format_supported | ( | struct vk_bundle * | vk, |
VkFormat | format, | ||
enum xrt_swapchain_usage_bits | xbits | ||
) |
Verify if a format is supported for a specific usage.
CSCI = Compositor SwapChain Images.