mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
libs/vkd3d: Do not try to create buffer views for block-compressed formats.
This commit is contained in:
@@ -880,6 +880,12 @@ void d3d12_cbv_srv_uav_desc_create_uav(struct d3d12_cbv_srv_uav_desc *descriptor
|
|||||||
return;
|
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)
|
if (desc->ViewDimension != D3D12_UAV_DIMENSION_BUFFER)
|
||||||
{
|
{
|
||||||
WARN("Unexpected view dimension %#x.\n", desc->ViewDimension);
|
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.flags = 0;
|
||||||
view_desc.buffer = resource->u.vk_buffer;
|
view_desc.buffer = resource->u.vk_buffer;
|
||||||
view_desc.format = format->vk_format;
|
view_desc.format = format->vk_format;
|
||||||
view_desc.offset = desc->u.Buffer.FirstElement * 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 * format->block_byte_count;
|
view_desc.range = desc->u.Buffer.NumElements * format->byte_count;
|
||||||
if ((vr = VK_CALL(vkCreateBufferView(device->vk_device, &view_desc, NULL,
|
if ((vr = VK_CALL(vkCreateBufferView(device->vk_device, &view_desc, NULL,
|
||||||
&descriptor->u.vk_buffer_view))) < 0)
|
&descriptor->u.vk_buffer_view))) < 0)
|
||||||
{
|
{
|
||||||
|
@@ -488,6 +488,11 @@ struct vkd3d_format
|
|||||||
VkImageAspectFlags vk_aspect_mask;
|
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;
|
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;
|
enum VkCompareOp vk_compare_op_from_d3d12(D3D12_COMPARISON_FUNC op) DECLSPEC_HIDDEN;
|
||||||
|
Reference in New Issue
Block a user