1eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer/**************************************************************************
2eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer *
3eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * Copyright 2009 VMware, Inc.  All Rights Reserved.
4eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer *
5eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * Permission is hereby granted, free of charge, to any person obtaining a
6eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * copy of this software and associated documentation files (the
7eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * "Software"), to deal in the Software without restriction, including
8eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * without limitation the rights to use, copy, modify, merge, publish,
9eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * distribute, sub license, and/or sell copies of the Software, and to
10eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * permit persons to whom the Software is furnished to do so, subject to
11eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * the following conditions:
12eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer *
13eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * The above copyright notice and this permission notice (including the
14eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * next paragraph) shall be included in all copies or substantial portions
15eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * of the Software.
16eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer *
17eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
21eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer *
25eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer **************************************************************************/
26eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
27eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer/* Authors:
28eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer *    Michel Dänzer
29eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer */
30eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
31eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
32eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer#include "pipe/p_context.h"
33eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer#include "pipe/p_state.h"
34eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
35eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
36eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer/**
37eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * Clear the given buffers to the specified values.
38eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * No masking, no scissor (clear entire buffer).
39eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer */
40eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzerstatic INLINE void
41eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzerutil_clear(struct pipe_context *pipe,
42eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer           struct pipe_framebuffer_state *framebuffer, unsigned buffers,
436dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie           const union pipe_color_union *color, double depth, unsigned stencil)
44eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer{
45eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer   if (buffers & PIPE_CLEAR_COLOR) {
46a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger      unsigned i;
47a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger      for (i = 0; i < framebuffer->nr_cbufs; i++) {
48a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger         struct pipe_surface *ps = framebuffer->cbufs[i];
496dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie         pipe->clear_render_target(pipe, ps, color, 0, 0, ps->width, ps->height);
50a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger      }
51eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer   }
52eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
53eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer   if (buffers & PIPE_CLEAR_DEPTHSTENCIL) {
54eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer      struct pipe_surface *ps = framebuffer->zsbuf;
55a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger      pipe->clear_depth_stencil(pipe, ps, buffers & PIPE_CLEAR_DEPTHSTENCIL,
56a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger                                depth, stencil,
57a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger                                0, 0, ps->width, ps->height);
58eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer   }
59eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer}
60