mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
libs/vkd3d: Add block size information to the texture format array.
This commit is contained in:
parent
ab63423c80
commit
1decba1a99
@ -1759,7 +1759,8 @@ static void vk_buffer_image_copy_from_d3d12(VkBufferImageCopy *buffer_image_copy
|
||||
unsigned int dst_x, unsigned int dst_y, unsigned int dst_z)
|
||||
{
|
||||
buffer_image_copy->bufferOffset = footprint->Offset;
|
||||
buffer_image_copy->bufferRowLength = footprint->Footprint.RowPitch / format->byte_count;
|
||||
buffer_image_copy->bufferRowLength = footprint->Footprint.RowPitch /
|
||||
(format->byte_count * format->block_byte_count) * format->block_width;
|
||||
buffer_image_copy->bufferImageHeight = 0;
|
||||
buffer_image_copy->imageSubresource.aspectMask = format->vk_aspect_mask;
|
||||
buffer_image_copy->imageSubresource.mipLevel = sub_resource_idx % image_desc->MipLevels;
|
||||
|
@ -898,8 +898,8 @@ void d3d12_cbv_srv_uav_desc_create_uav(struct d3d12_cbv_srv_uav_desc *descriptor
|
||||
view_desc.flags = 0;
|
||||
view_desc.buffer = resource->u.vk_buffer;
|
||||
view_desc.format = format->vk_format;
|
||||
view_desc.offset = desc->u.Buffer.FirstElement * format->byte_count;
|
||||
view_desc.range = desc->u.Buffer.NumElements * format->byte_count;
|
||||
view_desc.offset = desc->u.Buffer.FirstElement * format->byte_count * format->block_byte_count;
|
||||
view_desc.range = desc->u.Buffer.NumElements * format->byte_count * format->block_byte_count;
|
||||
if ((vr = VK_CALL(vkCreateBufferView(device->vk_device, &view_desc, NULL,
|
||||
&descriptor->u.vk_buffer_view))) < 0)
|
||||
{
|
||||
|
@ -20,29 +20,28 @@
|
||||
|
||||
static const struct vkd3d_format vkd3d_formats[] =
|
||||
{
|
||||
{DXGI_FORMAT_R32G32B32A32_FLOAT, VK_FORMAT_R32G32B32A32_SFLOAT, 16, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT, 16, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT, 16, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32_FLOAT, VK_FORMAT_R32G32B32_SFLOAT, 12, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32_FLOAT, VK_FORMAT_R32G32_SFLOAT, 8, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R16G16B16A16_FLOAT, VK_FORMAT_R16G16B16A16_SFLOAT, 8, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UINT, 8, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R10G10B10A2_UNORM, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R11G11B10_FLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, VK_FORMAT_R8G8B8A8_SRGB, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_D32_FLOAT, VK_FORMAT_D32_SFLOAT, 4, VK_IMAGE_ASPECT_DEPTH_BIT},
|
||||
{DXGI_FORMAT_R32_FLOAT, VK_FORMAT_R32_SFLOAT, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32_UINT, VK_FORMAT_R32_UINT, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R16_FLOAT, VK_FORMAT_R16_SFLOAT, 2, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM, 2, VK_IMAGE_ASPECT_DEPTH_BIT},
|
||||
{DXGI_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, 2, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8_UINT, VK_FORMAT_R8_UINT, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8_SNORM, VK_FORMAT_R8_SNORM, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_BC3_UNORM_SRGB, VK_FORMAT_BC3_SRGB_BLOCK, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_UNORM, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB, 4, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32A32_FLOAT, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT, 16, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT, 16, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32B32_FLOAT, VK_FORMAT_R32G32B32_SFLOAT, 12, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32G32_FLOAT, VK_FORMAT_R32G32_SFLOAT, 8, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R16G16B16A16_FLOAT, VK_FORMAT_R16G16B16A16_SFLOAT, 8, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UINT, 8, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R10G10B10A2_UNORM, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R11G11B10_FLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, VK_FORMAT_R8G8B8A8_SRGB, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_D32_FLOAT, VK_FORMAT_D32_SFLOAT, 4, 1, 1, 1, VK_IMAGE_ASPECT_DEPTH_BIT},
|
||||
{DXGI_FORMAT_R32_FLOAT, VK_FORMAT_R32_SFLOAT, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R32_UINT, VK_FORMAT_R32_UINT, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R16_FLOAT, VK_FORMAT_R16_SFLOAT, 2, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM, 2, 1, 1, 1, VK_IMAGE_ASPECT_DEPTH_BIT},
|
||||
{DXGI_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, 2, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8_UINT, VK_FORMAT_R8_UINT, 1, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_R8_SNORM, VK_FORMAT_R8_SNORM, 1, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
{DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB, 4, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},
|
||||
};
|
||||
|
||||
const struct vkd3d_format *vkd3d_get_format(DXGI_FORMAT dxgi_format)
|
||||
|
@ -482,6 +482,9 @@ struct vkd3d_format
|
||||
DXGI_FORMAT dxgi_format;
|
||||
VkFormat vk_format;
|
||||
size_t byte_count;
|
||||
size_t block_width;
|
||||
size_t block_height;
|
||||
size_t block_byte_count;
|
||||
VkImageAspectFlags vk_aspect_mask;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user