diff options
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 17 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 4 |
3 files changed, 25 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 3085a985517..a01decdb2f1 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -254,7 +254,10 @@ intel_update_state(struct gl_context * ctx, GLuint new_state) tex_obj = intel_texture_object(ctx->Texture.Unit[i]._Current); if (!tex_obj || !tex_obj->mt) continue; - intel_miptree_all_slices_resolve_depth(brw, tex_obj->mt); + if (intel_miptree_sample_with_hiz(brw, tex_obj->mt)) + intel_miptree_all_slices_resolve_hiz(brw, tex_obj->mt); + else + intel_miptree_all_slices_resolve_depth(brw, tex_obj->mt); /* Sampling engine understands lossless compression and resolving * those surfaces should be skipped for performance reasons. */ diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index 1141e94e7c8..a44fce0ab3d 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -2009,6 +2009,23 @@ intel_miptree_alloc_hiz(struct brw_context *brw, } /** + * Can the miptree sample using the hiz buffer? + */ +bool +intel_miptree_sample_with_hiz(struct brw_context *brw, + struct intel_mipmap_tree *mt) +{ + /* It's unclear how well supported sampling from the hiz buffer is on GEN8, + * so keep things conservative for now and never enable it unless we're SKL+. + */ + if (brw->gen < 9) { + return false; + } + + return false; +} + +/** * Does the miptree slice have hiz enabled? */ bool diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h index e9024a1006b..29228b82cf2 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h @@ -1050,6 +1050,10 @@ void intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt, unsigned int level, unsigned int layer, enum blorp_hiz_op op); +bool +intel_miptree_sample_with_hiz(struct brw_context *brw, + struct intel_mipmap_tree *mt); + #ifdef __cplusplus } #endif |