On 09.08.2016 00:59, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/auxiliary/util/u_clear.h            |  5 +++--
 src/gallium/auxiliary/vl/vl_bicubic_filter.c    |  2 +-
 src/gallium/auxiliary/vl/vl_compositor.c        |  2 +-
 src/gallium/docs/source/context.rst             |  7 ++++---
 src/gallium/drivers/ddebug/dd_draw.c            | 12 ++++++++----
 src/gallium/drivers/freedreno/freedreno_draw.c  |  6 ++++--
 src/gallium/drivers/i915/i915_surface.c         | 12 ++++++++----
 src/gallium/drivers/ilo/ilo_blit.c              |  6 ++++--
 src/gallium/drivers/llvmpipe/lp_surface.c       |  6 ++++--
 src/gallium/drivers/noop/noop_pipe.c            |  6 ++++--
 src/gallium/drivers/nouveau/nv30/nv30_clear.c   |  6 ++++--
 src/gallium/drivers/nouveau/nv50/nv50_surface.c | 10 ++++++----
 src/gallium/drivers/nouveau/nv50/nv84_video.c   |  6 +++---
 src/gallium/drivers/nouveau/nvc0/nvc0_surface.c |  6 ++++--
 src/gallium/drivers/r300/r300_blit.c            |  6 ++++--
 src/gallium/drivers/r600/r600_blit.c            |  6 ++++--
 src/gallium/drivers/radeonsi/si_blit.c          |  6 ++++--
 src/gallium/drivers/rbug/rbug_context.c         | 12 ++++++++----
 src/gallium/drivers/softpipe/sp_surface.c       |  6 ++++--
 src/gallium/drivers/swr/swr_clear.cpp           |  6 ++++--
 src/gallium/drivers/trace/tr_context.c          | 14 ++++++++++----
 src/gallium/drivers/vc4/vc4_draw.c              |  6 ++++--
 src/gallium/include/pipe/p_context.h            |  6 ++++--
 src/gallium/state_trackers/nine/device9.c       |  6 +++---
 src/gallium/state_trackers/nine/surface9.c      |  2 +-
 src/gallium/state_trackers/vdpau/surface.c      |  2 +-
 26 files changed, 109 insertions(+), 61 deletions(-)

[snip]
diff --git a/src/gallium/drivers/vc4/vc4_draw.c 
b/src/gallium/drivers/vc4/vc4_draw.c
index cf3f5e0..773caf7 100644
--- a/src/gallium/drivers/vc4/vc4_draw.c
+++ b/src/gallium/drivers/vc4/vc4_draw.c
@@ -490,29 +490,31 @@ vc4_clear(struct pipe_context *pctx, unsigned buffers,
         vc4->draw_max_y = vc4->framebuffer.height;
         vc4->cleared |= buffers;
         vc4->resolve |= buffers;

         vc4_start_draw(vc4, 0);
 }

 static void
 vc4_clear_render_target(struct pipe_context *pctx, struct pipe_surface *ps,
                         const union pipe_color_union *color,
-                        unsigned x, unsigned y, unsigned w, unsigned h)
+                        unsigned x, unsigned y, unsigned w, unsigned h,
+                       bool render_condition_enabled)
 {
         fprintf(stderr, "unimpl: clear RT\n");
 }

 static void
 vc4_clear_depth_stencil(struct pipe_context *pctx, struct pipe_surface *ps,
                         unsigned buffers, double depth, unsigned stencil,
-                        unsigned x, unsigned y, unsigned w, unsigned h)
+                        unsigned x, unsigned y, unsigned w, unsigned h,
+                       bool render_condition_enabled)

The whitespace looks inconsistent here and above. Apart from that:

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>

 {
         fprintf(stderr, "unimpl: clear DS\n");
 }

 void
 vc4_draw_init(struct pipe_context *pctx)
 {
         pctx->draw_vbo = vc4_draw_vbo;
         pctx->clear = vc4_clear;
         pctx->clear_render_target = vc4_clear_render_target;
diff --git a/src/gallium/include/pipe/p_context.h 
b/src/gallium/include/pipe/p_context.h
index f1de189..5359164 100644
--- a/src/gallium/include/pipe/p_context.h
+++ b/src/gallium/include/pipe/p_context.h
@@ -409,35 +409,37 @@ struct pipe_context {
                  unsigned stencil);

    /**
     * Clear a color rendertarget surface.
     * \param color  pointer to an union of fiu array for each of r, g, b, a.
     */
    void (*clear_render_target)(struct pipe_context *pipe,
                                struct pipe_surface *dst,
                                const union pipe_color_union *color,
                                unsigned dstx, unsigned dsty,
-                               unsigned width, unsigned height);
+                               unsigned width, unsigned height,
+                               bool render_condition_enabled);

    /**
     * Clear a depth-stencil surface.
     * \param clear_flags  bitfield of PIPE_CLEAR_DEPTH/STENCIL values.
     * \param depth  depth clear value in [0,1].
     * \param stencil  stencil clear value
     */
    void (*clear_depth_stencil)(struct pipe_context *pipe,
                                struct pipe_surface *dst,
                                unsigned clear_flags,
                                double depth,
                                unsigned stencil,
                                unsigned dstx, unsigned dsty,
-                               unsigned width, unsigned height);
+                               unsigned width, unsigned height,
+                               bool render_condition_enabled);

    /**
     * Clear the texture with the specified texel. Not guaranteed to be a
     * renderable format. Data provided in the resource's format.
     */
    void (*clear_texture)(struct pipe_context *pipe,
                          struct pipe_resource *res,
                          unsigned level,
                          const struct pipe_box *box,
                          const void *data);
diff --git a/src/gallium/state_trackers/nine/device9.c 
b/src/gallium/state_trackers/nine/device9.c
index b4ce3c8..d233304 100644
--- a/src/gallium/state_trackers/nine/device9.c
+++ b/src/gallium/state_trackers/nine/device9.c
@@ -1745,21 +1745,21 @@ NineDevice9_ColorFill( struct NineDevice9 *This,

     fallback = !(surf->base.info.bind & PIPE_BIND_RENDER_TARGET);

     if (!fallback) {
         psurf = NineSurface9_GetSurface(surf, 0);
         if (!psurf)
             fallback = TRUE;
     }

     if (!fallback) {
-        pipe->clear_render_target(pipe, psurf, &rgba, x, y, w, h);
+        pipe->clear_render_target(pipe, psurf, &rgba, x, y, w, h, false);
     } else {
         D3DLOCKED_RECT lock;
         union util_color uc;
         HRESULT hr;
         /* XXX: lock pRect and fix util_fill_rect */
         hr = NineSurface9_LockRect(surf, &lock, NULL, 0);
         if (FAILED(hr))
             return hr;
         util_pack_color_ub(color >> 16, color >> 8, color >> 0, color >> 24,
                            surf->base.info.format, &uc);
@@ -2030,21 +2030,21 @@ NineDevice9_Clear( struct NineDevice9 *This,
             if (pRects[r].y1 > pRects[r].y2) continue;
 #endif

             x1 = MAX2(x1, rect.x1);
             y1 = MAX2(y1, rect.y1);
             x2 = MIN3(x2, rect.x2, rt->desc.Width);
             y2 = MIN3(y2, rect.y2, rt->desc.Height);

             DBG("Clearing (%u..%u)x(%u..%u)\n", x1, x2, y1, y2);
             pipe->clear_render_target(pipe, cbuf, &rgba,
-                                      x1, y1, x2 - x1, y2 - y1);
+                                      x1, y1, x2 - x1, y2 - y1, false);
         }
     }
     if (!(bufs & PIPE_CLEAR_DEPTHSTENCIL))
         return D3D_OK;

     bufs &= PIPE_CLEAR_DEPTHSTENCIL;

     for (r = 0; r < Count; ++r) {
         unsigned x1 = MIN2(pRects[r].x1, pRects[r].x2);
         unsigned y1 = MIN2(pRects[r].y1, pRects[r].y2);
@@ -2057,21 +2057,21 @@ NineDevice9_Clear( struct NineDevice9 *This,
 #endif

         x1 = MIN2(x1, rect.x1);
         y1 = MIN2(y1, rect.y1);
         x2 = MIN3(x2, rect.x2, zsbuf_surf->desc.Width);
         y2 = MIN3(y2, rect.y2, zsbuf_surf->desc.Height);

         zsbuf = NineSurface9_GetSurface(zsbuf_surf, 0);
         assert(zsbuf);
         pipe->clear_depth_stencil(pipe, zsbuf, bufs, Z, Stencil,
-                                  x1, y1, x2 - x1, y2 - y1);
+                                  x1, y1, x2 - x1, y2 - y1, false);
     }
     return D3D_OK;
 }

 HRESULT NINE_WINAPI
 NineDevice9_SetTransform( struct NineDevice9 *This,
                           D3DTRANSFORMSTATETYPE State,
                           const D3DMATRIX *pMatrix )
 {
     struct nine_state *state = This->update;
diff --git a/src/gallium/state_trackers/nine/surface9.c 
b/src/gallium/state_trackers/nine/surface9.c
index 6a4a0d9..0cedd4e 100644
--- a/src/gallium/state_trackers/nine/surface9.c
+++ b/src/gallium/state_trackers/nine/surface9.c
@@ -157,21 +157,21 @@ NineSurface9_ctor( struct NineSurface9 *This,
     This->desc = *pDesc;

     This->stride = nine_format_get_stride(This->base.info.format, 
pDesc->Width);

     if (pResource && NineSurface9_IsOffscreenPlain(This))
         pResource->flags |= NINE_RESOURCE_FLAG_LOCKABLE;

     /* TODO: investigate what else exactly needs to be cleared */
     if (This->base.resource && (pDesc->Usage & D3DUSAGE_RENDERTARGET)) {
         surf = NineSurface9_GetSurface(This, 0);
-        pipe->clear_render_target(pipe, surf, &rgba, 0, 0, pDesc->Width, 
pDesc->Height);
+        pipe->clear_render_target(pipe, surf, &rgba, 0, 0, pDesc->Width, 
pDesc->Height, false);
     }

     NineSurface9_Dump(This);

     return D3D_OK;
 }

 void
 NineSurface9_dtor( struct NineSurface9 *This )
 {
diff --git a/src/gallium/state_trackers/vdpau/surface.c 
b/src/gallium/state_trackers/vdpau/surface.c
index 6dc479a..177483e 100644
--- a/src/gallium/state_trackers/vdpau/surface.c
+++ b/src/gallium/state_trackers/vdpau/surface.c
@@ -388,21 +388,21 @@ vlVdpVideoSurfaceClear(vlVdpSurface *vlsurf)
    for (i = 0; i < VL_MAX_SURFACES; ++i) {
       union pipe_color_union c = {};

       if (!surfaces[i])
          continue;

       if (i > !!vlsurf->templat.interlaced)
          c.f[0] = c.f[1] = c.f[2] = c.f[3] = 0.5f;

       pipe->clear_render_target(pipe, surfaces[i], &c, 0, 0,
-                                surfaces[i]->width, surfaces[i]->height);
+                                surfaces[i]->width, surfaces[i]->height, 
false);
    }
    pipe->flush(pipe, NULL, 0);
 }

 /**
  * Interop to mesa state tracker
  */
 struct pipe_video_buffer *vlVdpVideoSurfaceGallium(VdpVideoSurface surface)
 {
    vlVdpSurface *p_surf = vlGetDataHTAB(surface);

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to