Module: wine Branch: master Commit: f09b8e454d932f3768c8ad5f6f4658ee587f291e URL: http://source.winehq.org/git/wine.git/?a=commit;h=f09b8e454d932f3768c8ad5f6f...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu Apr 29 00:08:59 2010 +0200
wined3d: Avoid some needless depth buffer copies.
If an application switches between render targets of a different size, but with the same depth/stencil surface it'll typically clear the depth/stencil surface before drawing. However, in case of the smaller render target that wouldn't be a full clear, so we'd have to do a depth copy if we also switched between onscreen and offscreen rendering. Keeping track of which part of the depth/stencil surface is current for onscreen/offscreen allows us to avoid most of these kinds of copies. The current scheme requires the current/dirty rectangle to have an origin at (0,0). This could be extended to an arbitrary rectangle, but the bookkeeping becomes somewhat more complex in that case, and it's not clear that there would be much of a benefit at this point.
---
dlls/wined3d/arb_program_shader.c | 78 +++++++++++++++++++++++++++++------ dlls/wined3d/device.c | 70 ++++++++++++++++++++++++++++--- dlls/wined3d/drawprim.c | 23 +++++++++- dlls/wined3d/glsl_shader.c | 83 +++++++++++++++++++++++++++++++------ dlls/wined3d/shader.c | 2 +- dlls/wined3d/surface.c | 21 ++++++++-- dlls/wined3d/swapchain.c | 4 +- dlls/wined3d/wined3d_private.h | 6 ++- 8 files changed, 243 insertions(+), 44 deletions(-)
Diff: http://source.winehq.org/git/wine.git/?a=commitdiff;h=f09b8e454d932f3768c8ad...