intel/isl: Return surface creation success from aux helpers
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 17 Feb 2017 21:48:11 +0000 (13:48 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 23 Feb 2017 20:10:42 +0000 (12:10 -0800)
The isl_surf_init call that each of these helpers make can, in theory,
fail.  We should propagate that up to the caller rather than just
silently ignoring it.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
src/intel/isl/isl.c
src/intel/isl/isl.h
src/intel/vulkan/anv_image.c

index 82ab68dc65af952788b7cc3c0e0547cf508b6e1f..1a47da52579894a29200b916c2925e6940360e6e 100644 (file)
@@ -1323,7 +1323,7 @@ isl_surf_get_tile_info(const struct isl_device *dev,
    isl_tiling_get_info(dev, surf->tiling, fmtl->bpb, tile_info);
 }
 
-void
+bool
 isl_surf_get_hiz_surf(const struct isl_device *dev,
                       const struct isl_surf *surf,
                       struct isl_surf *hiz_surf)
@@ -1391,20 +1391,20 @@ isl_surf_get_hiz_surf(const struct isl_device *dev,
     */
    const unsigned samples = ISL_DEV_GEN(dev) >= 9 ? 1 : surf->samples;
 
-   isl_surf_init(dev, hiz_surf,
-                 .dim = surf->dim,
-                 .format = ISL_FORMAT_HIZ,
-                 .width = surf->logical_level0_px.width,
-                 .height = surf->logical_level0_px.height,
-                 .depth = surf->logical_level0_px.depth,
-                 .levels = surf->levels,
-                 .array_len = surf->logical_level0_px.array_len,
-                 .samples = samples,
-                 .usage = ISL_SURF_USAGE_HIZ_BIT,
-                 .tiling_flags = ISL_TILING_HIZ_BIT);
+   return isl_surf_init(dev, hiz_surf,
+                        .dim = surf->dim,
+                        .format = ISL_FORMAT_HIZ,
+                        .width = surf->logical_level0_px.width,
+                        .height = surf->logical_level0_px.height,
+                        .depth = surf->logical_level0_px.depth,
+                        .levels = surf->levels,
+                        .array_len = surf->logical_level0_px.array_len,
+                        .samples = samples,
+                        .usage = ISL_SURF_USAGE_HIZ_BIT,
+                        .tiling_flags = ISL_TILING_HIZ_BIT);
 }
 
-void
+bool
 isl_surf_get_mcs_surf(const struct isl_device *dev,
                       const struct isl_surf *surf,
                       struct isl_surf *mcs_surf)
@@ -1427,17 +1427,17 @@ isl_surf_get_mcs_surf(const struct isl_device *dev,
       unreachable("Invalid sample count");
    }
 
-   isl_surf_init(dev, mcs_surf,
-                 .dim = ISL_SURF_DIM_2D,
-                 .format = mcs_format,
-                 .width = surf->logical_level0_px.width,
-                 .height = surf->logical_level0_px.height,
-                 .depth = 1,
-                 .levels = 1,
-                 .array_len = surf->logical_level0_px.array_len,
-                 .samples = 1, /* MCS surfaces are really single-sampled */
-                 .usage = ISL_SURF_USAGE_MCS_BIT,
-                 .tiling_flags = ISL_TILING_Y0_BIT);
+   return isl_surf_init(dev, mcs_surf,
+                        .dim = ISL_SURF_DIM_2D,
+                        .format = mcs_format,
+                        .width = surf->logical_level0_px.width,
+                        .height = surf->logical_level0_px.height,
+                        .depth = 1,
+                        .levels = 1,
+                        .array_len = surf->logical_level0_px.array_len,
+                        .samples = 1, /* MCS surfaces are really single-sampled */
+                        .usage = ISL_SURF_USAGE_MCS_BIT,
+                        .tiling_flags = ISL_TILING_Y0_BIT);
 }
 
 bool
@@ -1491,19 +1491,17 @@ isl_surf_get_ccs_surf(const struct isl_device *dev,
       return false;
    }
 
-   isl_surf_init(dev, ccs_surf,
-                 .dim = surf->dim,
-                 .format = ccs_format,
-                 .width = surf->logical_level0_px.width,
-                 .height = surf->logical_level0_px.height,
-                 .depth = surf->logical_level0_px.depth,
-                 .levels = surf->levels,
-                 .array_len = surf->logical_level0_px.array_len,
-                 .samples = 1,
-                 .usage = ISL_SURF_USAGE_CCS_BIT,
-                 .tiling_flags = ISL_TILING_CCS_BIT);
-
-   return true;
+   return isl_surf_init(dev, ccs_surf,
+                        .dim = surf->dim,
+                        .format = ccs_format,
+                        .width = surf->logical_level0_px.width,
+                        .height = surf->logical_level0_px.height,
+                        .depth = surf->logical_level0_px.depth,
+                        .levels = surf->levels,
+                        .array_len = surf->logical_level0_px.array_len,
+                        .samples = 1,
+                        .usage = ISL_SURF_USAGE_CCS_BIT,
+                        .tiling_flags = ISL_TILING_CCS_BIT);
 }
 
 void
index c340e6a3f7a3495820cb25dfa5838193f41d85f6..3a2991b2344d9620d59bf4eec9a3b873f39598cc 100644 (file)
@@ -1275,12 +1275,12 @@ isl_surf_get_tile_info(const struct isl_device *dev,
                        const struct isl_surf *surf,
                        struct isl_tile_info *tile_info);
 
-void
+bool
 isl_surf_get_hiz_surf(const struct isl_device *dev,
                       const struct isl_surf *surf,
                       struct isl_surf *hiz_surf);
 
-void
+bool
 isl_surf_get_mcs_surf(const struct isl_device *dev,
                       const struct isl_surf *surf,
                       struct isl_surf *mcs_surf);
index e2f7ca340fd5300e47cee13911050edc664d911c..47d0a1ec33340b0ab12d5b2eeec8c00cbedde098 100644 (file)
@@ -209,8 +209,9 @@ make_surface(const struct anv_device *dev,
          anv_finishme("Test gen8 multisampled HiZ");
       } else {
          assert(image->aux_surface.isl.size == 0);
-         isl_surf_get_hiz_surf(&dev->isl_dev, &image->depth_surface.isl,
-                               &image->aux_surface.isl);
+         ok = isl_surf_get_hiz_surf(&dev->isl_dev, &image->depth_surface.isl,
+                                    &image->aux_surface.isl);
+         assert(ok);
          add_surface(image, &image->aux_surface);
          image->aux_usage = ISL_AUX_USAGE_HIZ;
       }