Nikolay Sivov (@nsivov) commented about dlls/d2d1/device.c:
ID2D1SpriteBatch *sprite_batch, UINT32 start_index, UINT32 sprite_count, ID2D1Bitmap *bitmap, D2D1_BITMAP_INTERPOLATION_MODE interpolation_mode, D2D1_SPRITE_OPTIONS sprite_options) { - FIXME("iface %p, sprite_batch %p, start_index %u, sprite_count %u, bitmap %p, interpolation_mode %u," - "sprite_options %u stub!\n", iface, sprite_batch, start_index, sprite_count, bitmap, + struct d2d_sprite_batch *sprite_batch_impl = unsafe_impl_from_ID2D1SpriteBatch(sprite_batch); + TRACE("iface %p, sprite_batch %p, start_index %u, sprite_count %u, bitmap %p, interpolation_mode %u," + "sprite_options %u\n", iface, sprite_batch, start_index, sprite_count, bitmap, interpolation_mode, sprite_options); + + for (int i = start_index; i < start_index + sprite_count; ++i) { + ID2D1DeviceContext6_DrawBitmap(iface, bitmap, &sprite_batch_impl->destination_rectangles[i], 1.0f, + (D2D1_INTERPOLATION_MODE)interpolation_mode, 0, 0); + } }
This is most likely incorrect for command list case, since it has dedicated method for sprites. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11249#note_144102