Commit 0610d1ee authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Invalidate the entire buffer on maps with WINED3DLOCK_DISCARD.

parent 611b541f
...@@ -1011,7 +1011,20 @@ HRESULT CDECL wined3d_buffer_map(struct wined3d_buffer *buffer, UINT offset, UIN ...@@ -1011,7 +1011,20 @@ HRESULT CDECL wined3d_buffer_map(struct wined3d_buffer *buffer, UINT offset, UIN
flags = buffer_sanitize_flags(buffer, flags); flags = buffer_sanitize_flags(buffer, flags);
if (!(flags & WINED3DLOCK_READONLY)) if (!(flags & WINED3DLOCK_READONLY))
{ {
if (!buffer_add_dirty_area(buffer, offset, size)) return E_OUTOFMEMORY; if (flags & WINED3DLOCK_DISCARD)
{
/* DISCARD invalidates the entire buffer, regardless of the
* specified offset and size. Some applications also depend on the
* entire buffer being uploaded in that case. Two such
* applications are Port Royale and Darkstar One. */
if (!buffer_add_dirty_area(buffer, 0, 0))
return E_OUTOFMEMORY;
}
else
{
if (!buffer_add_dirty_area(buffer, offset, size))
return E_OUTOFMEMORY;
}
} }
count = ++buffer->resource.map_count; count = ++buffer->resource.map_count;
......
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