On 12/10/19 8:38 AM, Henri Verbeet wrote:
On Sat, 7 Dec 2019 at 19:41, Zebediah Figura z.figura12@gmail.com wrote:
+static void resolve_depth_buffer(struct d3d9_device *device) +{
- const struct wined3d_stateblock_state *state = wined3d_stateblock_get_state(device->state);
- struct wined3d_rendertarget_view *wined3d_dsv;
- struct wined3d_resource *dst_resource;
- struct wined3d_texture *dst_texture;
- struct wined3d_resource_desc desc;
- struct d3d9_surface *d3d9_dsv;
- if (!(dst_texture = state->textures[0]))
return;
- dst_resource = wined3d_texture_get_resource(dst_texture);
- wined3d_resource_get_desc(dst_resource, &desc);
- if (desc.format != WINED3DFMT_D24_UNORM_S8_UINT
&& desc.format != WINED3DFMT_X8D24_UNORM
&& desc.format != MAKEFOURCC('D','F','1','6')
&& desc.format != MAKEFOURCC('D','F','2','4')
&& desc.format != WINED3DFMT_INTZ)
return;
- if (!(wined3d_dsv = wined3d_device_get_depth_stencil_view(device->wined3d_device)))
return;
- d3d9_dsv = wined3d_rendertarget_view_get_sub_resource_parent(wined3d_dsv);
- wined3d_device_resolve_sub_resource(device->wined3d_device, dst_resource, 0,
wined3d_rendertarget_view_get_resource(wined3d_dsv), d3d9_dsv->sub_resource_idx, 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.
Right, I have patches for d3d8 too; I was just taking care of one module at a time.
Anyway, I'll move the feature query too, thanks.
On the other hand, if exposing a single helper from wined3d is preferable, I'm happy to take that approach instead. (Or doing it in wined3d_stateblock_set_render_state(), but that feels a little awkward to me.)
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.
Sure, will do.