[PATCH] wined3d: Reject unsupported pitches in wined3d_surface_update_desc(). (v2)
Matteo Bruni
mbruni at codeweavers.com
Wed Feb 18 12:21:00 CST 2015
I went for a quite large comment here, the reasoning behind the check
seems non-obvious enough.
v2: Move the check to wined3d_texture_update_desc, make it work with
NPOT texture format byte width.
It supersedes patch 109210.
---
dlls/wined3d/texture.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 57c8ef7..7c390d7 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -642,6 +642,19 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT
return WINED3DERR_INVALIDCALL;
}
+ /* We have no way of supporting a pitch that is not a multiple of the pixel
+ * byte width short of uploading the texture row-by-row.
+ * Fortunately that's not an issue since D3D9Ex doesn't allow a custom pitch
+ * for user-memory textures (it always expects packed data) while DirectDraw
+ * requires a 4-byte aligned pitch and doesn't support texture formats
+ * larger than 4 bytes per pixel nor any format using 3 bytes per pixel.
+ * This check is here to verify that the assumption holds. */
+ if (pitch % texture->resource.format->byte_count)
+ {
+ WARN("Pitch unsupported, not a multiple of the texture format byte width.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
surface = surface_from_resource(texture->sub_resources[0]);
if (surface->resource.map_count || (surface->flags & SFLAG_DCINUSE))
{
--
2.0.5
More information about the wine-patches
mailing list