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
flags = buffer_sanitize_flags(buffer, flags);
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;
......
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