From a01536a29fdebfcdf7781e28a66b3b2abba943c8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 6 Jun 2016 11:28:16 +0200 Subject: [PATCH] gallium/radeon: add an assertion checking the validity of PIPE_BIND_SCANOUT MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Nicolai Hähnle Reviewed-by: Bas Nieuwenhuizen --- src/gallium/drivers/radeon/r600_texture.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index 0f72a6d64af..ca91c37ae17 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -266,9 +266,6 @@ static int r600_init_surface(struct r600_common_screen *rscreen, default: return -EINVAL; } - if (ptex->bind & PIPE_BIND_SCANOUT) { - surface->flags |= RADEON_SURF_SCANOUT; - } if (!is_flushed_depth && is_depth) { surface->flags |= RADEON_SURF_ZBUFFER; @@ -286,6 +283,16 @@ static int r600_init_surface(struct r600_common_screen *rscreen, ptex->format == PIPE_FORMAT_R9G9B9E5_FLOAT) surface->flags |= RADEON_SURF_DISABLE_DCC; + if (ptex->bind & PIPE_BIND_SCANOUT) { + /* This should catch bugs in gallium users setting incorrect flags. */ + assert(surface->nsamples == 1 && + surface->array_size == 1 && + surface->npix_z == 1 && + surface->last_level == 0 && + !(surface->flags & RADEON_SURF_Z_OR_SBUFFER)); + + surface->flags |= RADEON_SURF_SCANOUT; + } return 0; } -- 2.30.2