From d4fa98db0c9a5d640fee946c713c8d06597e47f3 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 3 Jun 2013 12:35:01 +0800 Subject: [PATCH] ilo: simplify emit_3DSTATE_DEPTH_BUFFER() Remove hiz and dsa from the parameters. We would know whether HiZ buffer exists from ilo_texture once it is supported. DSA state should not affect 3DSTATE_DEPTH_BUFFER. --- .../drivers/ilo/ilo_3d_pipeline_gen6.c | 3 +- .../drivers/ilo/ilo_3d_pipeline_gen7.c | 13 ++----- src/gallium/drivers/ilo/ilo_gpe_gen6.c | 37 +++++++------------ src/gallium/drivers/ilo/ilo_gpe_gen6.h | 8 ---- src/gallium/drivers/ilo/ilo_gpe_gen7.c | 12 +----- src/gallium/drivers/ilo/ilo_gpe_gen7.h | 9 +---- 6 files changed, 19 insertions(+), 63 deletions(-) diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c index c94a0bbda24..a504acd586a 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c @@ -722,8 +722,7 @@ gen6_pipeline_wm_depth(struct ilo_3d_pipeline *p, gen6_wa_pipe_control_wm_depth_flush(p); } - p->gen6_3DSTATE_DEPTH_BUFFER(p->dev, - ilo->fb.state.zsbuf, false, p->cp); + p->gen6_3DSTATE_DEPTH_BUFFER(p->dev, ilo->fb.state.zsbuf, p->cp); /* TODO */ p->gen6_3DSTATE_CLEAR_PARAMS(p->dev, 0, p->cp); diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c index 1ad19d2e675..bb9b079b908 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c @@ -539,16 +539,9 @@ gen7_pipeline_wm(struct ilo_3d_pipeline *p, */ /* 3DSTATE_DEPTH_BUFFER and 3DSTATE_CLEAR_PARAMS */ - if (DIRTY(FRAMEBUFFER) || DIRTY(DEPTH_STENCIL_ALPHA) || - session->state_bo_changed) { - const bool hiz = false; - - p->gen7_3DSTATE_DEPTH_BUFFER(p->dev, - ilo->fb.state.zsbuf, &ilo->dsa->state, hiz, p->cp); - - p->gen6_3DSTATE_HIER_DEPTH_BUFFER(p->dev, - (hiz) ? ilo->fb.state.zsbuf : NULL, p->cp); - + if (DIRTY(FRAMEBUFFER) || session->state_bo_changed) { + p->gen7_3DSTATE_DEPTH_BUFFER(p->dev, ilo->fb.state.zsbuf, p->cp); + p->gen6_3DSTATE_HIER_DEPTH_BUFFER(p->dev, ilo->fb.state.zsbuf, p->cp); p->gen6_3DSTATE_STENCIL_BUFFER(p->dev, ilo->fb.state.zsbuf, p->cp); /* TODO */ diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen6.c b/src/gallium/drivers/ilo/ilo_gpe_gen6.c index dab964f36c1..a585819961f 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen6.c +++ b/src/gallium/drivers/ilo/ilo_gpe_gen6.c @@ -2272,18 +2272,17 @@ gen6_get_depth_buffer_format(const struct ilo_dev_info *dev, return depth_format; } -void -ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, - const struct pipe_surface *surface, - const struct pipe_depth_stencil_alpha_state *dsa, - bool hiz, - struct ilo_cp *cp) +static void +gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, + const struct pipe_surface *surface, + struct ilo_cp *cp) { const uint32_t cmd = (dev->gen >= ILO_GEN(7)) ? ILO_GPE_CMD(0x3, 0x0, 0x05) : ILO_GPE_CMD(0x3, 0x1, 0x05); const uint8_t cmd_len = 7; const int max_2d_size = (dev->gen >= ILO_GEN(7)) ? 16384 : 8192; const int max_array_size = (dev->gen >= ILO_GEN(7)) ? 2048 : 512; + const bool hiz = false; struct ilo_texture *tex; uint32_t dw1, dw3, dw4, dw6; uint32_t slice_offset, x_offset, y_offset; @@ -2465,17 +2464,15 @@ ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, (tex->bo_stride - 1); if (dev->gen >= ILO_GEN(7)) { - if (has_depth) { - if (dsa->depth.writemask) - dw1 |= 1 << 28; - if (hiz) - dw1 |= 1 << 22; - } + if (has_depth) + dw1 |= 1 << 28; - if (has_stencil && - (dsa->stencil[0].writemask || dsa->stencil[1].writemask)) + if (has_stencil) dw1 |= 1 << 27; + if (hiz) + dw1 |= 1 << 22; + dw3 = (height - 1) << 18 | (width - 1) << 4 | lod; @@ -2525,15 +2522,6 @@ ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, ilo_cp_end(cp); } -static void -gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, - const struct pipe_surface *surface, - bool hiz, - struct ilo_cp *cp) -{ - ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(dev, surface, NULL, hiz, cp); -} - static void gen6_emit_3DSTATE_POLY_STIPPLE_OFFSET(const struct ilo_dev_info *dev, int x_offset, int y_offset, @@ -2765,12 +2753,13 @@ gen6_emit_3DSTATE_HIER_DEPTH_BUFFER(const struct ilo_dev_info *dev, ILO_GPE_CMD(0x3, 0x0, 0x07) : ILO_GPE_CMD(0x3, 0x1, 0x0f); const uint8_t cmd_len = 3; + const bool hiz = false; struct ilo_texture *tex; uint32_t slice_offset; ILO_GPE_VALID_GEN(dev, 6, 7); - if (!surface) { + if (!surface || !hiz) { ilo_cp_begin(cp, cmd_len); ilo_cp_write(cp, cmd | (cmd_len - 2)); ilo_cp_write(cp, 0); diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen6.h b/src/gallium/drivers/ilo/ilo_gpe_gen6.h index 16445a03d9f..c7cd7b3a53e 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen6.h +++ b/src/gallium/drivers/ilo/ilo_gpe_gen6.h @@ -301,7 +301,6 @@ typedef void typedef void (*ilo_gpe_gen6_3DSTATE_DEPTH_BUFFER)(const struct ilo_dev_info *dev, const struct pipe_surface *surface, - bool hiz, struct ilo_cp *cp); typedef void @@ -569,11 +568,4 @@ ilo_gpe_gen6_fill_3dstate_sf_sbe(const struct ilo_dev_info *dev, const struct ilo_shader *last_sh, uint32_t *dw, int num_dwords); -void -ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, - const struct pipe_surface *surface, - const struct pipe_depth_stencil_alpha_state *dsa, - bool hiz, - struct ilo_cp *cp); - #endif /* ILO_GPE_GEN6_H */ diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen7.c b/src/gallium/drivers/ilo/ilo_gpe_gen7.c index 383b7d9a3d2..4ec0e8608b9 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen7.c +++ b/src/gallium/drivers/ilo/ilo_gpe_gen7.c @@ -58,16 +58,6 @@ gen7_emit_3DSTATE_CLEAR_PARAMS(const struct ilo_dev_info *dev, ilo_cp_end(cp); } -static void -gen7_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev, - const struct pipe_surface *surface, - const struct pipe_depth_stencil_alpha_state *dsa, - bool hiz, - struct ilo_cp *cp) -{ - ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(dev, surface, dsa, hiz, cp); -} - static void gen7_emit_3dstate_pointer(const struct ilo_dev_info *dev, int subop, uint32_t pointer, @@ -1926,7 +1916,7 @@ gen7_init(struct ilo_gpe_gen7 *gen7) GEN7_USE(gen7, MEDIA_STATE_FLUSH, gen6); GEN7_SET(gen7, GPGPU_WALKER); GEN7_SET(gen7, 3DSTATE_CLEAR_PARAMS); - GEN7_SET(gen7, 3DSTATE_DEPTH_BUFFER); + GEN7_USE(gen7, 3DSTATE_DEPTH_BUFFER, gen6); GEN7_USE(gen7, 3DSTATE_STENCIL_BUFFER, gen6); GEN7_USE(gen7, 3DSTATE_HIER_DEPTH_BUFFER, gen6); GEN7_USE(gen7, 3DSTATE_VERTEX_BUFFERS, gen6); diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen7.h b/src/gallium/drivers/ilo/ilo_gpe_gen7.h index d270ea677d6..5cc1fb1aaf8 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen7.h +++ b/src/gallium/drivers/ilo/ilo_gpe_gen7.h @@ -141,14 +141,7 @@ typedef void struct ilo_cp *cp); typedef ilo_gpe_gen6_3DSTATE_CLEAR_PARAMS ilo_gpe_gen7_3DSTATE_CLEAR_PARAMS; - -typedef void -(*ilo_gpe_gen7_3DSTATE_DEPTH_BUFFER)(const struct ilo_dev_info *dev, - const struct pipe_surface *surface, - const struct pipe_depth_stencil_alpha_state *dsa, - bool hiz, - struct ilo_cp *cp); - +typedef ilo_gpe_gen6_3DSTATE_DEPTH_BUFFER ilo_gpe_gen7_3DSTATE_DEPTH_BUFFER; typedef ilo_gpe_gen6_3DSTATE_STENCIL_BUFFER ilo_gpe_gen7_3DSTATE_STENCIL_BUFFER; typedef ilo_gpe_gen6_3DSTATE_HIER_DEPTH_BUFFER ilo_gpe_gen7_3DSTATE_HIER_DEPTH_BUFFER; typedef ilo_gpe_gen6_3DSTATE_VERTEX_BUFFERS ilo_gpe_gen7_3DSTATE_VERTEX_BUFFERS; -- 2.30.2