wined3d: Handle unpack row length inside surface_upload_data().

This commit is contained in:
Henri Verbeet 2011-06-09 20:40:47 +02:00 committed by Alexandre Julliard
parent ee6d550b2e
commit 9f3e6a20e8
1 changed files with 6 additions and 10 deletions

View File

@ -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 */