summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2013-06-03 12:35:01 +0800
committerChia-I Wu <[email protected]>2013-06-07 11:13:15 +0800
commitd4fa98db0c9a5d640fee946c713c8d06597e47f3 (patch)
treeddcab2e399773fe46d96aa151cf94c9645239a3f /src/gallium
parenteea1be2072a1c980871d80df71d3e39a67fdfb0a (diff)
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.
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c3
-rw-r--r--src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c13
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen6.c37
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen6.h8
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen7.c12
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen7.h9
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;
@@ -2526,15 +2523,6 @@ ilo_gpe_gen6_emit_3DSTATE_DEPTH_BUFFER(const struct ilo_dev_info *dev,
}
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,
struct ilo_cp *cp)
@@ -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
@@ -59,16 +59,6 @@ gen7_emit_3DSTATE_CLEAR_PARAMS(const struct ilo_dev_info *dev,
}
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,
struct ilo_cp *cp)
@@ -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;