[Mesa-dev] [PATCH 05/16] anv/image: Get rid of the memset(aux, 0, sizeof(aux)) hack

Nanley Chery nanleychery at gmail.com
Tue May 23 22:51:32 UTC 2017


On Thu, May 18, 2017 at 02:00:52PM -0700, Jason Ekstrand wrote:
> Up until now, we've been memsetting the auxiliary surface to 0 at
> BindImageMemory time to ensure that it is properly initialized.
> However, this isn't correct because apps are allowed to freely alias
> memory between different images and buffers so long as they properly
> track whether or not a particular image is valid and, if it isn't,
> transition from UNINITIALIZED to something else before using it.  We
> now implement those transitions so we can drop the hack.
> ---
>  src/intel/vulkan/anv_image.c | 28 ----------------------------
>  1 file changed, 28 deletions(-)
> 

I'm glad that we're fixing this. This patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>

> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> index d65ef47..3510186 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -332,7 +332,6 @@ VkResult anv_BindImageMemory(
>      VkDeviceMemory                              _memory,
>      VkDeviceSize                                memoryOffset)
>  {
> -   ANV_FROM_HANDLE(anv_device, device, _device);
>     ANV_FROM_HANDLE(anv_device_memory, mem, _memory);
>     ANV_FROM_HANDLE(anv_image, image, _image);
>  
> @@ -345,33 +344,6 @@ VkResult anv_BindImageMemory(
>     image->bo = mem->bo;
>     image->offset = memoryOffset;
>  
> -   if (image->aux_surface.isl.size > 0) {
> -
> -      /* The offset and size must be a multiple of 4K or else the
> -       * anv_gem_mmap call below will fail.
> -       */
> -      assert((image->offset + image->aux_surface.offset) % 4096 == 0);
> -      assert(image->aux_surface.isl.size % 4096 == 0);
> -
> -      /* Auxiliary surfaces need to have their memory cleared to 0 before they
> -       * can be used.  For CCS surfaces, this puts them in the "resolved"
> -       * state so they can be used with CCS enabled before we ever touch it
> -       * from the GPU.  For HiZ, we need something valid or else we may get
> -       * GPU hangs on some hardware and 0 works fine.
> -       */
> -      void *map = anv_gem_mmap(device, image->bo->gem_handle,
> -                               image->offset + image->aux_surface.offset,
> -                               image->aux_surface.isl.size,
> -                               device->info.has_llc ? 0 : I915_MMAP_WC);
> -
> -      if (map == MAP_FAILED)
> -         return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
> -
> -      memset(map, 0, image->aux_surface.isl.size);
> -
> -      anv_gem_munmap(map, image->aux_surface.isl.size);
> -   }
> -
>     return VK_SUCCESS;
>  }
>  
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list