There is no bit-compatible UINT format, so we'll use R32_UINT.
Signed-off-by: Philip Rebohle philip.rebohle@tu-dortmund.de --- libs/vkd3d/command.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index e5fe0ad..0745cfc 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -4925,6 +4925,22 @@ static void d3d12_command_list_clear_unordered_access_view(struct d3d12_command_ } }
+static const struct vkd3d_format *vkd3d_fixup_clear_uav_uint_color(struct d3d12_device *device, + DXGI_FORMAT dxgi_format, const UINT values[4], VkClearColorValue *color) +{ + switch (dxgi_format) + { + case DXGI_FORMAT_R11G11B10_FLOAT: + color->uint32[0] = (values[0] & 0x7FF) + | ((values[1] & 0x7FF) << 11) + | ((values[2] & 0x3FF) << 22); + return vkd3d_get_format(device, DXGI_FORMAT_R32_UINT, false); + + default: + return NULL; + } +} + static void STDMETHODCALLTYPE d3d12_command_list_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList1 *iface, D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle, D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle, ID3D12Resource *resource, const UINT values[4], UINT rect_count, const D3D12_RECT *rects) @@ -4950,7 +4966,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_ClearUnorderedAccessViewUint(ID { uint_format = vkd3d_find_uint_format(list->device, base_view->format->dxgi_format);
- if (!uint_format) + if (!uint_format && !(uint_format = vkd3d_fixup_clear_uav_uint_color( + list->device, base_view->format->dxgi_format, values, &color))) { ERR("Unhandled format %d.\n", base_view->format->dxgi_format); return;