wined3d: Only translate coordinates for swapchain surfaces in surface_translate_drawable_coords().
This fixes a regression introduced by commit
dbd8c89ea8
. When using ORM_BACKBUFFER,
off-screen surfaces may be loaded into WINED3D_LOCATION_DRAWABLE. They
shouldn't be flipped in that case.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d371468858
commit
e091c6e81c
|
@ -1911,27 +1911,22 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st
|
|||
void surface_translate_drawable_coords(const struct wined3d_surface *surface, HWND window, RECT *rect)
|
||||
{
|
||||
struct wined3d_texture *texture = surface->container;
|
||||
POINT offset = {0, 0};
|
||||
UINT drawable_height;
|
||||
RECT windowsize;
|
||||
|
||||
if (texture->swapchain)
|
||||
if (!texture->swapchain)
|
||||
return;
|
||||
|
||||
if (texture == texture->swapchain->front_buffer)
|
||||
{
|
||||
POINT offset = {0, 0};
|
||||
RECT windowsize;
|
||||
|
||||
if (texture == texture->swapchain->front_buffer)
|
||||
{
|
||||
ScreenToClient(window, &offset);
|
||||
OffsetRect(rect, offset.x, offset.y);
|
||||
}
|
||||
|
||||
GetClientRect(window, &windowsize);
|
||||
drawable_height = windowsize.bottom - windowsize.top;
|
||||
}
|
||||
else
|
||||
{
|
||||
drawable_height = wined3d_texture_get_level_height(texture, surface->texture_level);
|
||||
ScreenToClient(window, &offset);
|
||||
OffsetRect(rect, offset.x, offset.y);
|
||||
}
|
||||
|
||||
GetClientRect(window, &windowsize);
|
||||
drawable_height = windowsize.bottom - windowsize.top;
|
||||
|
||||
rect->top = drawable_height - rect->top;
|
||||
rect->bottom = drawable_height - rect->bottom;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue