diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 7fcc9c8ae2e..42cd2264613 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4160,106 +4160,6 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device draw_primitive(device, start_idx, index_count, start_instance, instance_count, TRUE, NULL); } -HRESULT CDECL wined3d_device_draw_primitive_up(struct wined3d_device *device, UINT vertex_count, - const void *stream_data, UINT stream_stride) -{ - struct wined3d_stream_state *stream; - struct wined3d_buffer *vb; - - TRACE("device %p, vertex count %u, stream_data %p, stream_stride %u.\n", - device, vertex_count, stream_data, stream_stride); - - if (!device->stateBlock->state.vertex_declaration) - { - WARN("Called without a valid vertex declaration set.\n"); - return WINED3DERR_INVALIDCALL; - } - - /* Note in the following, it's not this type, but that's the purpose of streamIsUP */ - stream = &device->stateBlock->state.streams[0]; - vb = stream->buffer; - stream->buffer = (struct wined3d_buffer *)stream_data; - if (vb) - wined3d_buffer_decref(vb); - stream->offset = 0; - stream->stride = stream_stride; - device->stateBlock->state.user_stream = TRUE; - if (device->stateBlock->state.load_base_vertex_index) - { - device->stateBlock->state.load_base_vertex_index = 0; - device_invalidate_state(device, STATE_BASEVERTEXINDEX); - } - - /* TODO: Only mark dirty if drawing from a different UP address */ - device_invalidate_state(device, STATE_STREAMSRC); - - draw_primitive(device, 0, vertex_count, 0, 0, FALSE, NULL); - - /* MSDN specifies stream zero settings must be set to NULL */ - stream->buffer = NULL; - stream->stride = 0; - - /* stream zero settings set to null at end, as per the msdn. No need to - * mark dirty here, the app has to set the new stream sources or use UP - * drawing again. */ - return WINED3D_OK; -} - -HRESULT CDECL wined3d_device_draw_indexed_primitive_up(struct wined3d_device *device, - UINT index_count, const void *index_data, enum wined3d_format_id index_data_format_id, - const void *stream_data, UINT stream_stride) -{ - struct wined3d_stream_state *stream; - struct wined3d_buffer *vb, *ib; - - TRACE("device %p, index_count %u, index_data %p, index_data_format %s, stream_data %p, stream_stride %u.\n", - device, index_count, index_data, debug_d3dformat(index_data_format_id), stream_data, stream_stride); - - if (!device->stateBlock->state.vertex_declaration) - { - WARN("(%p) : Called without a valid vertex declaration set\n", device); - return WINED3DERR_INVALIDCALL; - } - - stream = &device->stateBlock->state.streams[0]; - vb = stream->buffer; - stream->buffer = (struct wined3d_buffer *)stream_data; - if (vb) - wined3d_buffer_decref(vb); - stream->offset = 0; - stream->stride = stream_stride; - device->stateBlock->state.user_stream = TRUE; - device->stateBlock->state.index_format = index_data_format_id; - - /* Set to 0 as per MSDN. Do it now due to the stream source loading during draw_primitive(). */ - device->stateBlock->state.base_vertex_index = 0; - if (device->stateBlock->state.load_base_vertex_index) - { - device->stateBlock->state.load_base_vertex_index = 0; - device_invalidate_state(device, STATE_BASEVERTEXINDEX); - } - /* Invalidate the state until we have nicer tracking of the stream source pointers */ - device_invalidate_state(device, STATE_STREAMSRC); - device_invalidate_state(device, STATE_INDEXBUFFER); - - draw_primitive(device, 0, index_count, 0, 0, TRUE, index_data); - - /* MSDN specifies stream zero settings and index buffer must be set to NULL */ - stream->buffer = NULL; - stream->stride = 0; - ib = device->stateBlock->state.index_buffer; - if (ib) - { - wined3d_buffer_decref(ib); - device->stateBlock->state.index_buffer = NULL; - } - /* No need to mark the stream source state dirty here. Either the app calls UP drawing again, or it has to call - * SetStreamSource to specify a vertex buffer - */ - - return WINED3D_OK; -} - HRESULT CDECL wined3d_device_draw_primitive_strided(struct wined3d_device *device, UINT vertex_count, const struct wined3d_strided_data *strided_data) { diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 3b39c41ddf4..5322be87eff 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -45,10 +45,8 @@ @ cdecl wined3d_device_draw_indexed_primitive(ptr long long) @ cdecl wined3d_device_draw_indexed_primitive_instanced(ptr long long long long) @ cdecl wined3d_device_draw_indexed_primitive_strided(ptr long ptr long ptr long) -@ cdecl wined3d_device_draw_indexed_primitive_up(ptr long ptr long ptr long) @ cdecl wined3d_device_draw_primitive(ptr long long) @ cdecl wined3d_device_draw_primitive_strided(ptr long ptr) -@ cdecl wined3d_device_draw_primitive_up(ptr long ptr long) @ cdecl wined3d_device_draw_rect_patch(ptr long ptr ptr) @ cdecl wined3d_device_draw_tri_patch(ptr long ptr ptr) @ cdecl wined3d_device_end_scene(ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 0b073282d81..77c76abb0a1 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2094,14 +2094,9 @@ void __cdecl wined3d_device_draw_indexed_primitive_instanced(struct wined3d_devi HRESULT __cdecl wined3d_device_draw_indexed_primitive_strided(struct wined3d_device *device, UINT index_count, const struct wined3d_strided_data *strided_data, UINT vertex_count, const void *index_data, enum wined3d_format_id index_data_format_id); -HRESULT __cdecl wined3d_device_draw_indexed_primitive_up(struct wined3d_device *device, - UINT index_count, const void *index_data, enum wined3d_format_id index_data_format_id, - const void *stream_data, UINT stream_stride); HRESULT __cdecl wined3d_device_draw_primitive(struct wined3d_device *device, UINT start_vertex, UINT vertex_count); HRESULT __cdecl wined3d_device_draw_primitive_strided(struct wined3d_device *device, UINT vertex_count, const struct wined3d_strided_data *strided_data); -HRESULT __cdecl wined3d_device_draw_primitive_up(struct wined3d_device *device, - UINT vertex_count, const void *stream_data, UINT stream_stride); HRESULT __cdecl wined3d_device_draw_rect_patch(struct wined3d_device *device, UINT handle, const float *num_segs, const struct wined3d_rect_patch_info *rect_patch_info); HRESULT __cdecl wined3d_device_draw_tri_patch(struct wined3d_device *device, UINT handle,