Henri Verbeet : wined3d: Avoid some needless depth buffer copies.

Alexandre Julliard julliard at winehq.org
Thu Apr 29 14:45:05 CDT 2010


Module: wine
Branch: master
Commit: f09b8e454d932f3768c8ad5f6f4658ee587f291e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f09b8e454d932f3768c8ad5f6f4658ee587f291e

Author: Henri Verbeet <hverbeet at 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=f09b8e454d932f3768c8ad5f6f4658ee587f291e



More information about the wine-cvs mailing list