isl: Add more assertions to isl_surf_get_depth_format()
authorChad Versace <chad.versace@intel.com>
Tue, 9 Feb 2016 19:21:23 +0000 (11:21 -0800)
committerChad Versace <chad.versace@intel.com>
Tue, 9 Feb 2016 19:40:08 +0000 (11:40 -0800)
R16_UNORM and R32_FLOAT are illegal formats for interleaved depthstencil
surfaces.

src/isl/isl.c

index f5b2cd5b2506112d95e57dd615935dc674a93d84..27928fd0850c1c62a031da056f8b4b8fd84e69ca 100644 (file)
@@ -1397,9 +1397,11 @@ isl_surf_get_depth_format(const struct isl_device *dev,
     * Format (p321).
     */
 
+   bool has_stencil = surf->usage & ISL_SURF_USAGE_STENCIL_BIT;
+
    assert(surf->usage & ISL_SURF_USAGE_DEPTH_BIT);
 
-   if (surf->usage & ISL_SURF_USAGE_STENCIL_BIT)
+   if (has_stencil)
       assert(ISL_DEV_GEN(dev) < 7);
 
    switch (surf->format) {
@@ -1409,9 +1411,10 @@ isl_surf_get_depth_format(const struct isl_device *dev,
       assert(ISL_DEV_GEN(dev) < 7);
       return 0; /* D32_FLOAT_S8X24_UINT */
    case ISL_FORMAT_R32_FLOAT:
+      assert(!has_stencil);
       return 1; /* D32_FLOAT */
    case ISL_FORMAT_R24_UNORM_X8_TYPELESS:
-      if (surf->usage & ISL_SURF_USAGE_STENCIL_BIT) {
+      if (has_stencil) {
          assert(ISL_DEV_GEN(dev) < 7);
          return 2; /* D24_UNORM_S8_UINT */
       } else {
@@ -1419,6 +1422,7 @@ isl_surf_get_depth_format(const struct isl_device *dev,
          return 3; /* D24_UNORM_X8_UINT */
       }
    case ISL_FORMAT_R16_UNORM:
+      assert(!has_stencil);
       return 5; /* D16_UNORM */
    }
 }