[PATCH 3/5] d3d9: Handle multisample depth resolve in d3d9_device_SetRenderState(). (original) (raw)

Henri Verbeet hverbeet at gmail.com
Tue Dec 10 08:38:09 CST 2019


On Sat, 7 Dec 2019 at 19:41, Zebediah Figura <z.figura12 at gmail.com> wrote:

+static void resolvedepthbuffer(struct d3d9device *device) +{ + const struct wined3dstateblockstate *state = wined3dstateblockgetstate(device->state); + struct wined3drendertargetview *wined3ddsv; + struct wined3dresource *dstresource; + struct wined3dtexture *dsttexture; + struct wined3dresourcedesc desc; + struct d3d9surface *d3d9dsv; + + if (!(dsttexture = state->textures[0])) + return; + dstresource = wined3dtexturegetresource(dsttexture); + wined3dresourcegetdesc(dstresource, &desc); + if (desc.format != WINED3DFMTD24UNORMS8UINT + && desc.format != WINED3DFMTX8D24UNORM + && desc.format != MAKEFOURCC('D','F','1','6') + && desc.format != MAKEFOURCC('D','F','2','4') + && desc.format != WINED3DFMTINTZ) + return; + + if (!(wined3ddsv = wined3ddevicegetdepthstencilview(device->wined3ddevice))) + return; + d3d9dsv = wined3drendertargetviewgetsubresourceparent(wined3ddsv); + + wined3ddeviceresolvesubresource(device->wined3ddevice, dstresource, 0, + wined3drendertargetviewgetresource(wined3ddsv), d3d9dsv->subresourceidx, desc.format); +} If we're going to implement this in d3d9 (but note that the feature is supported by d3d8 as well), it would be best to implement the corresponding feature query in d3d9 instead of wined3d as well.

Note that you can't (currently) create DF16/24 resources. Checking for those isn't necessarily an issue, but in that case please just add en entry for them to the wined3d_format_id enumeration.



More information about the wine-devel mailing list