libs/vkd3d: Do not try to create buffer views for block-compressed formats.

This commit is contained in:
Józef Kucia 2017-08-02 15:30:15 +02:00
parent a8b64aeede
commit de2024d235
2 changed files with 13 additions and 2 deletions

View File

@ -880,6 +880,12 @@ void d3d12_cbv_srv_uav_desc_create_uav(struct d3d12_cbv_srv_uav_desc *descriptor
return;
}
if (vkd3d_format_is_compressed(format))
{
WARN("Buffer views cannot be created for compressed formats.\n");
return;
}
if (desc->ViewDimension != D3D12_UAV_DIMENSION_BUFFER)
{
WARN("Unexpected view dimension %#x.\n", desc->ViewDimension);
@ -898,8 +904,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 * format->block_byte_count;
view_desc.range = desc->u.Buffer.NumElements * format->byte_count * format->block_byte_count;
view_desc.offset = desc->u.Buffer.FirstElement * format->byte_count;
view_desc.range = desc->u.Buffer.NumElements * format->byte_count;
if ((vr = VK_CALL(vkCreateBufferView(device->vk_device, &view_desc, NULL,
&descriptor->u.vk_buffer_view))) < 0)
{

View File

@ -488,6 +488,11 @@ struct vkd3d_format
VkImageAspectFlags vk_aspect_mask;
};
static inline bool vkd3d_format_is_compressed(const struct vkd3d_format *format)
{
return format->block_byte_count != 1;
}
const struct vkd3d_format *vkd3d_get_format(DXGI_FORMAT dxgi_format) DECLSPEC_HIDDEN;
enum VkCompareOp vk_compare_op_from_d3d12(D3D12_COMPARISON_FUNC op) DECLSPEC_HIDDEN;