https://bugs.winehq.org/show_bug.cgi?id=45747
--- Comment #1 from Henri Verbeet hverbeet@gmail.com --- (In reply to Andrew Wesie from comment #0)
When running FFXIV in D3D11 mode, it is horrendously slow because it does several UpdateSubresource calls to a depth-stencil texture from another texture. Right now, texture2d_blt will pass this on to a raw_blitter_blit as WINED3D_BLIT_OP_DEPTH_BLIT, which will ignore it and continue passing it on until it ends up at the CPU blitter.
I believe a simple fix is to update the conditional in raw_blitter_blit to allow op == WINED3D_BLIT_OP_DEPTH_BLIT. I don't see an obvious reason why a depth-stencil blit should be special from the perspective of glCopyImageSubData. On my system, this significantly improved fps (though still not quite to matching FFXIV D3D9).
Well, the issue isn't that WINED3D_BLIT_OP_DEPTH_BLIT is special, it's that WINED3D_BLIT_OP_RAW_BLIT has additional restrictions. E.g., WINED3D_BLIT_OP_DEPTH_BLIT can do scaling and multi-sample resolves, while WINED3D_BLIT_OP_RAW_BLIT can't.
The way to use the raw blitter would be to call the blitter with WINED3D_BLIT_OP_RAW_BLIT in texture2d_blt(), under the right circumstances. (I.e., WINED3D_BLT_RAW or !scale, !convert, !resolve, like it's done for colour blits.)
There are a couple of things that sound suspicious here though. Are you sure these blits are coming from UpdateSubresource()? Those should normally go to wined3d_texture_upload_data() rather than the blitter; did you perhaps mean CopyResource() or CopySubresourceRegion()? Why does the FBO blitter reject the blit? The raw blitter rejecting these is expected, although not ideal; the FBO blitter rejecting them is somewhat unexpected.