Zebediah Figura (@zfigura) commented about dlls/ddraw/device.c:
+ * + * It will delegate to a single call to wined3d with the correct parameters, + * and a (hopefully) huge list of triangles vertices. */ + +static HRESULT ddraw_buffer_flush_internal(struct d3d_device *device) { + HRESULT hr; + + TRACE_(ddraw_perf)("primitive_type %#x buffer_vertex_count %05lu buffer_indice_count %05lu\n", device->ddraw_device_buffer.primitive_type, device->ddraw_device_buffer.buffer_vertex_count, device->ddraw_device_buffer.buffer_indice_count); + + /* Calling wined3d directly */ + wined3d_mutex_lock(); + + hr = wined3d_stateblock_set_stream_source(device->state, 0, device->vertex_buffer.buffer, 0, device->ddraw_device_buffer.stride); + + if (FAILED(hr)) + goto done; I wouldn't bother with the error check here; the function can only actually fail on invalid parameters.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/2105#note_24903