From 9f3e6a20e81546979e6a2fae41d15897ade9aa46 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 9 Jun 2011 20:40:47 +0200 Subject: [PATCH] wined3d: Handle unpack row length inside surface_upload_data(). --- dlls/wined3d/surface.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index ad217fcb9a6..06f38b09d04 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -2199,6 +2199,9 @@ static void surface_upload_data(struct wined3d_surface *surface, const struct wi data = NULL; } + /* Make sure the correct pitch is used */ + glPixelStorei(GL_UNPACK_ROW_LENGTH, width); + if (format->flags & WINED3DFMT_FLAG_COMPRESSED) { TRACE("Calling glCompressedTexSubImage2DARB.\n"); @@ -2216,6 +2219,9 @@ static void surface_upload_data(struct wined3d_surface *surface, const struct wi checkGLcall("glTexSubImage2D"); } + /* Restore the default pitch */ + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + if (surface->flags & SFLAG_PBO) { GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0)); @@ -6159,19 +6165,9 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD flag, const mem = surface->resource.allocatedMemory; } - /* Make sure the correct pitch is used */ - ENTER_GL(); - glPixelStorei(GL_UNPACK_ROW_LENGTH, width); - LEAVE_GL(); - if (mem || (surface->flags & SFLAG_PBO)) surface_upload_data(surface, gl_info, &format, srgb, mem); - /* Restore the default pitch */ - ENTER_GL(); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - LEAVE_GL(); - if (context) context_release(context); /* Don't delete PBO memory */