mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
include: Document structure vkd3d_image_resource_create_info.
This commit is contained in:
parent
2679b10fcb
commit
3f43d06f5c
Notes:
Alexandre Julliard
2024-05-02 22:40:34 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/819
@ -313,18 +313,58 @@ struct vkd3d_optional_device_extensions_info
|
|||||||
uint32_t extension_count;
|
uint32_t extension_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* vkd3d_image_resource_create_info flags */
|
/**
|
||||||
|
* When specified as a flag of vkd3d_image_resource_create_info, it means that vkd3d will do the
|
||||||
|
* initial transition operation on the image from VK_IMAGE_LAYOUT_UNDEFINED to its appropriate
|
||||||
|
* Vulkan layout (depending on its D3D12 resource state). If this flag is not specified the caller
|
||||||
|
* is responsible for transitioning the Vulkan image to the appropriate layout.
|
||||||
|
*/
|
||||||
#define VKD3D_RESOURCE_INITIAL_STATE_TRANSITION 0x00000001
|
#define VKD3D_RESOURCE_INITIAL_STATE_TRANSITION 0x00000001
|
||||||
|
/**
|
||||||
|
* When specified as a flag of vkd3d_image_resource_create_info, it means that field present_state
|
||||||
|
* is honored.
|
||||||
|
*/
|
||||||
#define VKD3D_RESOURCE_PRESENT_STATE_TRANSITION 0x00000002
|
#define VKD3D_RESOURCE_PRESENT_STATE_TRANSITION 0x00000002
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A chained structure containing the parameters to create a D3D12 resource backed by a Vulkan
|
||||||
|
* image.
|
||||||
|
*/
|
||||||
struct vkd3d_image_resource_create_info
|
struct vkd3d_image_resource_create_info
|
||||||
{
|
{
|
||||||
|
/** Must be set to VKD3D_STRUCTURE_TYPE_IMAGE_RESOURCE_CREATE_INFO. */
|
||||||
enum vkd3d_structure_type type;
|
enum vkd3d_structure_type type;
|
||||||
|
/** Optional pointer to a structure containing further parameters. */
|
||||||
const void *next;
|
const void *next;
|
||||||
|
|
||||||
|
/** The Vulkan image that backs the resource. */
|
||||||
VkImage vk_image;
|
VkImage vk_image;
|
||||||
|
/** The resource description. */
|
||||||
D3D12_RESOURCE_DESC desc;
|
D3D12_RESOURCE_DESC desc;
|
||||||
|
/**
|
||||||
|
* A combination of zero or more flags. The valid flags are
|
||||||
|
* VKD3D_RESOURCE_INITIAL_STATE_TRANSITION and VKD3D_RESOURCE_PRESENT_STATE_TRANSITION.
|
||||||
|
*/
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
/**
|
||||||
|
* This field specifies how to handle resource state D3D12_RESOURCE_STATE_PRESENT for
|
||||||
|
* the resource. Notice that on D3D12 there is no difference between
|
||||||
|
* D3D12_RESOURCE_STATE_COMMON and D3D12_RESOURCE_STATE_PRESENT (they have the same value),
|
||||||
|
* while on Vulkan two different layouts are used (VK_IMAGE_LAYOUT_GENERAL and
|
||||||
|
* VK_IMAGE_LAYOUT_PRESENT_SRC_KHR).
|
||||||
|
*
|
||||||
|
* * When flag VKD3D_RESOURCE_PRESENT_STATE_TRANSITION is not specified, field
|
||||||
|
* present_state is ignored and resource state D3D12_RESOURCE_STATE_COMMON/_PRESENT is
|
||||||
|
* mapped to VK_IMAGE_LAYOUT_GENERAL; this is useful for non-swapchain resources.
|
||||||
|
* * Otherwise, when present_state is D3D12_RESOURCE_STATE_PRESENT/_COMMON, resource state
|
||||||
|
* D3D12_RESOURCE_STATE_COMMON/_PRESENT is mapped to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
|
||||||
|
* this is useful for swapchain resources that are directly backed by a Vulkan swapchain
|
||||||
|
* image.
|
||||||
|
* * Otherwise, resource state D3D12_RESOURCE_STATE_COMMON/_PRESENT is treated as resource
|
||||||
|
* state present_state; this is useful for swapchain resources that backed by a Vulkan
|
||||||
|
* non-swapchain image, which the client will likely consume with a copy or drawing
|
||||||
|
* operation at presentation time.
|
||||||
|
*/
|
||||||
D3D12_RESOURCE_STATES present_state;
|
D3D12_RESOURCE_STATES present_state;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user