mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d: Store the vkd3d format in resource objects.
Resource formats are immutable and the format object is static data. Storing it saves a function call and error check in many locations. The current implementation for finding a format iterates over the entire list of formats. Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
66bc2672a1
commit
1f3ec35138
@ -2116,17 +2116,10 @@ static void d3d12_command_list_transition_resource_to_initial_state(struct d3d12
|
|||||||
const struct vkd3d_vk_device_procs *vk_procs = &list->device->vk_procs;
|
const struct vkd3d_vk_device_procs *vk_procs = &list->device->vk_procs;
|
||||||
const struct vkd3d_vulkan_info *vk_info = &list->device->vk_info;
|
const struct vkd3d_vulkan_info *vk_info = &list->device->vk_info;
|
||||||
VkPipelineStageFlags src_stage_mask, dst_stage_mask;
|
VkPipelineStageFlags src_stage_mask, dst_stage_mask;
|
||||||
const struct vkd3d_format *format;
|
|
||||||
VkImageMemoryBarrier barrier;
|
VkImageMemoryBarrier barrier;
|
||||||
|
|
||||||
assert(d3d12_resource_is_texture(resource));
|
assert(d3d12_resource_is_texture(resource));
|
||||||
|
|
||||||
if (!(format = vkd3d_format_from_d3d12_resource_desc(list->device, &resource->desc, 0)))
|
|
||||||
{
|
|
||||||
ERR("Resource %p has invalid format %#x.\n", resource, resource->desc.Format);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||||
barrier.pNext = NULL;
|
barrier.pNext = NULL;
|
||||||
|
|
||||||
@ -2146,7 +2139,7 @@ static void d3d12_command_list_transition_resource_to_initial_state(struct d3d12
|
|||||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||||
barrier.image = resource->u.vk_image;
|
barrier.image = resource->u.vk_image;
|
||||||
barrier.subresourceRange.aspectMask = format->vk_aspect_mask;
|
barrier.subresourceRange.aspectMask = resource->format->vk_aspect_mask;
|
||||||
barrier.subresourceRange.baseMipLevel = 0;
|
barrier.subresourceRange.baseMipLevel = 0;
|
||||||
barrier.subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS;
|
barrier.subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS;
|
||||||
barrier.subresourceRange.baseArrayLayer = 0;
|
barrier.subresourceRange.baseArrayLayer = 0;
|
||||||
|
@ -1778,6 +1778,8 @@ static HRESULT d3d12_resource_init(struct d3d12_resource *resource, struct d3d12
|
|||||||
if (FAILED(hr = d3d12_resource_validate_desc(&resource->desc, device)))
|
if (FAILED(hr = d3d12_resource_validate_desc(&resource->desc, device)))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
|
resource->format = vkd3d_format_from_d3d12_resource_desc(device, desc, 0);
|
||||||
|
|
||||||
switch (desc->Dimension)
|
switch (desc->Dimension)
|
||||||
{
|
{
|
||||||
case D3D12_RESOURCE_DIMENSION_BUFFER:
|
case D3D12_RESOURCE_DIMENSION_BUFFER:
|
||||||
@ -2030,6 +2032,7 @@ HRESULT vkd3d_create_image_resource(ID3D12Device *device,
|
|||||||
object->refcount = 1;
|
object->refcount = 1;
|
||||||
object->internal_refcount = 1;
|
object->internal_refcount = 1;
|
||||||
object->desc = create_info->desc;
|
object->desc = create_info->desc;
|
||||||
|
object->format = vkd3d_format_from_d3d12_resource_desc(d3d12_device, &create_info->desc, 0);
|
||||||
object->u.vk_image = create_info->vk_image;
|
object->u.vk_image = create_info->vk_image;
|
||||||
object->flags = VKD3D_RESOURCE_EXTERNAL;
|
object->flags = VKD3D_RESOURCE_EXTERNAL;
|
||||||
object->flags |= create_info->flags & VKD3D_RESOURCE_PUBLIC_FLAGS;
|
object->flags |= create_info->flags & VKD3D_RESOURCE_PUBLIC_FLAGS;
|
||||||
|
@ -430,6 +430,7 @@ struct d3d12_resource
|
|||||||
LONG internal_refcount;
|
LONG internal_refcount;
|
||||||
|
|
||||||
D3D12_RESOURCE_DESC desc;
|
D3D12_RESOURCE_DESC desc;
|
||||||
|
const struct vkd3d_format *format;
|
||||||
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS gpu_address;
|
D3D12_GPU_VIRTUAL_ADDRESS gpu_address;
|
||||||
union
|
union
|
||||||
|
Loading…
x
Reference in New Issue
Block a user