summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_mipmap_tree.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_mipmap_tree.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index f60e1c368f5..e2d897a0b37 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -2164,7 +2164,12 @@ intel_miptree_updownsample(struct brw_context *brw,
struct intel_mipmap_tree *src,
struct intel_mipmap_tree *dst)
{
- if (brw->gen < 8) {
+ /* There is support only for four and eight samples. */
+ const bool use_blorp = brw->gen < 8 &&
+ src->num_samples != 2 && dst->num_samples != 2 &&
+ src->num_samples <= 8 && dst->num_samples <= 8;
+
+ if (use_blorp) {
brw_blorp_blit_miptrees(brw,
src, 0 /* level */, 0 /* layer */,
src->format, SWIZZLE_XYZW,
@@ -2182,7 +2187,7 @@ intel_miptree_updownsample(struct brw_context *brw,
}
if (src->stencil_mt) {
- if (brw->gen >= 8) {
+ if (!use_blorp) {
brw_meta_stencil_updownsample(brw, src->stencil_mt, dst);
return;
}