summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-04-22 13:46:25 -0700
committerJason Ekstrand <[email protected]>2016-04-26 14:55:22 -0700
commit8096ed7e27abc0619f4a4298481e1e072aa91828 (patch)
tree258809dc60b61acbb23fcde030c375316bf52896 /src
parente35d9407dca0c2b0ecc1e778864f1a1c47258505 (diff)
i965/blorp: Remove the hiz params class
Reviewed-by: Topi Pohjolainen <[email protected]> Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.cpp58
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.h21
2 files changed, 42 insertions, 37 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index 068650c29e0..204cc565057 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -176,6 +176,15 @@ brw_blorp_params::brw_blorp_params()
}
extern "C" {
+/**
+ * Perform a HiZ or depth resolve operation.
+ *
+ * For an overview of HiZ ops, see the following sections of the Sandy Bridge
+ * PRM, Volume 1, Part 2:
+ * - 7.5.3.1 Depth Buffer Clear
+ * - 7.5.3.2 Depth Buffer Resolve
+ * - 7.5.3.3 Hierarchical Depth Buffer Resolve
+ */
void
intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
unsigned int level, unsigned int layer, gen6_hiz_op op)
@@ -203,8 +212,7 @@ intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
if (brw->gen >= 8) {
gen8_hiz_exec(brw, mt, level, layer, op);
} else {
- brw_hiz_op_params params(mt, level, layer, op);
- brw_blorp_exec(brw, &params);
+ gen6_blorp_hiz_exec(brw, mt, level, layer, op);
}
}
@@ -296,14 +304,15 @@ retry:
brw_emit_mi_flush(brw);
}
-brw_hiz_op_params::brw_hiz_op_params(struct intel_mipmap_tree *mt,
- unsigned int level,
- unsigned int layer,
- gen6_hiz_op op)
+void
+gen6_blorp_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
+ unsigned int level, unsigned int layer, enum gen6_hiz_op op)
{
- this->hiz_op = op;
+ brw_blorp_params params;
- depth.set(mt, level, layer);
+ params.hiz_op = op;
+
+ params.depth.set(mt, level, layer);
/* Align the rectangle primitive to 8x4 pixels.
*
@@ -330,24 +339,33 @@ brw_hiz_op_params::brw_hiz_op_params(struct intel_mipmap_tree *mt,
* not 8. But commit 1f112cc increased the alignment from 4 to 8, which
* prevents the clobbering.
*/
- dst.num_samples = mt->num_samples;
- if (dst.num_samples > 1) {
- depth.width = ALIGN(mt->logical_width0, 8);
- depth.height = ALIGN(mt->logical_height0, 4);
+ params.dst.num_samples = mt->num_samples;
+ if (params.dst.num_samples > 1) {
+ params.depth.width = ALIGN(mt->logical_width0, 8);
+ params.depth.height = ALIGN(mt->logical_height0, 4);
} else {
- depth.width = ALIGN(depth.width, 8);
- depth.height = ALIGN(depth.height, 4);
+ params.depth.width = ALIGN(params.depth.width, 8);
+ params.depth.height = ALIGN(params.depth.height, 4);
}
- x1 = depth.width;
- y1 = depth.height;
+ params.x1 = params.depth.width;
+ params.y1 = params.depth.height;
assert(intel_miptree_level_has_hiz(mt, level));
switch (mt->format) {
- case MESA_FORMAT_Z_UNORM16: depth_format = BRW_DEPTHFORMAT_D16_UNORM; break;
- case MESA_FORMAT_Z_FLOAT32: depth_format = BRW_DEPTHFORMAT_D32_FLOAT; break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT: depth_format = BRW_DEPTHFORMAT_D24_UNORM_X8_UINT; break;
- default: unreachable("not reached");
+ case MESA_FORMAT_Z_UNORM16:
+ params.depth_format = BRW_DEPTHFORMAT_D16_UNORM;
+ break;
+ case MESA_FORMAT_Z_FLOAT32:
+ params.depth_format = BRW_DEPTHFORMAT_D32_FLOAT;
+ break;
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ params.depth_format = BRW_DEPTHFORMAT_D24_UNORM_X8_UINT;
+ break;
+ default:
+ unreachable("not reached");
}
+
+ brw_blorp_exec(brw, &params);
}
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
index 8117f0e9bbf..c4d87d88b0b 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -258,6 +258,10 @@ void
brw_blorp_exec(struct brw_context *brw, const brw_blorp_params *params);
void
+gen6_blorp_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
+ unsigned level, unsigned layer, enum gen6_hiz_op op);
+
+void
gen6_blorp_exec(struct brw_context *brw,
const brw_blorp_params *params);
@@ -268,23 +272,6 @@ gen7_blorp_exec(struct brw_context *brw,
void
gen8_blorp_exec(struct brw_context *brw, const brw_blorp_params *params);
-/**
- * Parameters for a HiZ or depth resolve operation.
- *
- * For an overview of HiZ ops, see the following sections of the Sandy Bridge
- * PRM, Volume 1, Part 2:
- * - 7.5.3.1 Depth Buffer Clear
- * - 7.5.3.2 Depth Buffer Resolve
- * - 7.5.3.3 Hierarchical Depth Buffer Resolve
- */
-class brw_hiz_op_params : public brw_blorp_params
-{
-public:
- brw_hiz_op_params(struct intel_mipmap_tree *mt,
- unsigned int level, unsigned int layer,
- gen6_hiz_op op);
-};
-
struct brw_blorp_blit_prog_key
{
/* Number of samples per pixel that have been configured in the surface