From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3d11/tests/d3d11.c | 4 ++++ dlls/wined3d/device.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 3f4db50efb0..e03057a1845 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -21002,6 +21002,10 @@ static void test_index_buffer_offset(void) } release_resource_readback(&rb);
+ /* Without index buffer */ + ID3D11DeviceContext_IASetIndexBuffer(context, NULL, DXGI_FORMAT_R32_UINT, 0); + ID3D11DeviceContext_DrawIndexed(context, 4, 0, 0); + /* indirect draws */ args_buffer = create_buffer_misc(device, 0, D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS, sizeof(argument_data), argument_data); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index a5b3c246485..443bf10ab76 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -2651,8 +2651,11 @@ void CDECL wined3d_device_context_draw_indexed(struct wined3d_device_context *co context, base_vertex_index, start_index, index_count, start_instance, instance_count);
wined3d_device_context_lock(context); - wined3d_device_context_emit_draw(context, state->primitive_type, state->patch_vertex_count, - base_vertex_index, start_index, index_count, start_instance, instance_count, true); + if (state->index_buffer) + { + wined3d_device_context_emit_draw(context, state->primitive_type, state->patch_vertex_count, + base_vertex_index, start_index, index_count, start_instance, instance_count, true); + } wined3d_device_context_unlock(context); }