mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d: Add FIXME() for unsupported strip cut values.
In Vulkan, the strip cut value is derived from the current index buffer format. We could recompile the pipeline to handle more cases. Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
c74074d93f
commit
a1ad45be69
@@ -1703,6 +1703,8 @@ static void d3d12_command_list_reset_state(struct d3d12_command_list *list,
|
||||
memset(list->strides, 0, sizeof(list->strides));
|
||||
list->primitive_topology = VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
|
||||
|
||||
list->index_buffer_format = DXGI_FORMAT_UNKNOWN;
|
||||
|
||||
memset(list->views, 0, sizeof(list->views));
|
||||
list->fb_width = 0;
|
||||
list->fb_height = 0;
|
||||
@@ -2293,6 +2295,20 @@ static void STDMETHODCALLTYPE d3d12_command_list_DrawIndexedInstanced(ID3D12Grap
|
||||
return;
|
||||
}
|
||||
|
||||
switch (list->state->u.graphics.index_buffer_strip_cut_value)
|
||||
{
|
||||
case D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF:
|
||||
if (list->index_buffer_format != DXGI_FORMAT_R16_UINT)
|
||||
FIXME("Strip cut value 0xffff is not supported with index buffer format %#x.\n", list->index_buffer_format);
|
||||
break;
|
||||
case D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF:
|
||||
if (list->index_buffer_format != DXGI_FORMAT_R32_UINT)
|
||||
FIXME("Strip cut value 0xffffffff is not supported with index buffer format %#x.\n", list->index_buffer_format);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
VK_CALL(vkCmdDrawIndexed(list->vk_command_buffer, index_count_per_instance,
|
||||
instance_count, start_vertex_location, base_vertex_location, start_instance_location));
|
||||
}
|
||||
@@ -3475,6 +3491,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_IASetIndexBuffer(ID3D12Graphics
|
||||
return;
|
||||
}
|
||||
|
||||
list->index_buffer_format = view->Format;
|
||||
|
||||
resource = vkd3d_gpu_va_allocator_dereference(&list->device->gpu_va_allocator, view->BufferLocation);
|
||||
VK_CALL(vkCmdBindIndexBuffer(list->vk_command_buffer, resource->u.vk_buffer,
|
||||
view->BufferLocation - resource->gpu_address, index_type));
|
||||
|
||||
Reference in New Issue
Block a user