Commit 82f067f5 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Allow loading multisampled surfaces into sysmem.

parent f0c85ff8
...@@ -5789,6 +5789,9 @@ static void surface_load_sysmem(struct wined3d_surface *surface, ...@@ -5789,6 +5789,9 @@ static void surface_load_sysmem(struct wined3d_surface *surface,
{ {
surface_prepare_system_memory(surface); surface_prepare_system_memory(surface);
if (surface->flags & (SFLAG_INRB_MULTISAMPLE | SFLAG_INRB_RESOLVED))
surface_load_location(surface, SFLAG_INTEXTURE, NULL);
/* Download the surface to system memory. */ /* Download the surface to system memory. */
if (surface->flags & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX)) if (surface->flags & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX))
{ {
...@@ -5945,6 +5948,22 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, ...@@ -5945,6 +5948,22 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
return WINED3D_OK; return WINED3D_OK;
} }
if (surface->flags & (SFLAG_INRB_MULTISAMPLE | SFLAG_INRB_RESOLVED)
&& (surface->resource.format->flags & attach_flags) == attach_flags
&& fbo_blit_supported(gl_info, WINED3D_BLIT_OP_COLOR_BLIT,
NULL, surface->resource.usage, surface->resource.pool, surface->resource.format,
NULL, surface->resource.usage, surface->resource.pool, surface->resource.format))
{
DWORD src_location = surface->flags & SFLAG_INRB_RESOLVED ? SFLAG_INRB_RESOLVED : SFLAG_INRB_MULTISAMPLE;
DWORD dst_location = srgb ? SFLAG_INSRGBTEX : SFLAG_INTEXTURE;
RECT rect = {0, 0, surface->resource.width, surface->resource.height};
surface_blt_fbo(device, WINED3DTEXF_POINT, surface, src_location,
&rect, surface, dst_location, &rect);
return WINED3D_OK;
}
/* Upload from system memory */ /* Upload from system memory */
d3dfmt_get_conv(surface, TRUE /* We need color keying */, d3dfmt_get_conv(surface, TRUE /* We need color keying */,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment