[Mesa-dev] [PATCH 00/23] anv: Format reworks
Nanley Chery
nanleychery at gmail.com
Tue May 17 00:55:52 UTC 2016
On Mon, May 16, 2016 at 12:08:05PM -0700, Jason Ekstrand wrote:
> This series scratches an itch I've had in the Vulkan driver for some time.
> Early on, we added a table of anv_format structs. This served a bunch of
> different purposes at the same time: basic format introspection, mapping
> from VkFormats to hardware formats, and we also threw them around as a form
> of format handle (we storred one in anv_image for instance).
>
> As the driver has grown, this really isn't appropreate anymore. The bit of
> format introspection we do (has_stencil and has_depth) are more easiliy
> served by a simple switch statement. We no longer have a one-to-one
> mapping from VkFormats to hardware formats because things like RGB formats
> get a different format depending on whether they're linear or tiled. It
> also doesn't make sense to use it as a format handle because that leads to
> people doing image->format->isl_format because they're lazy and don't want
> to look up the actual format for the aspect they want which may lead to
> them getting the wrong format.
>
> This series (which is way more patches than I expected) solves this by
> making the following changes:
>
> 1) vk_format_info.h now provides very basic VkFormat introspection
> 2) anv_image has an aspects field
> 3) struct anv_format is stripped down to just an isl_format and swizzle
> 4) anv_format_for_vk_format is replaced by anv_get_format which also takes
> a devinfo, tiling, and aspect and returns the actual format+swizzle
> 5) Cleanups to use the right formats various places
>
> At the end of the series, I have one more patch that adds better 4444
> support on pre-bdw. This fixes a pile (~165) Vulkan CTS tests on Haswell
> and brings Broadwell back to supporting all the required Vulkan formats.
>
> Cc: Chad Versace <chad.versace at intel.com>
> Cc: Nanley Chery <nanley.g.chery at intel.com>
>
Thanks for reworking the format code.
Patches 3, 5-6, 9-10, 12-13, 16-23 are,
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>
Please find my comments and remaining reviews in the indivdual replies.
- Nanley
> Jason Ekstrand (23):
> anv/wsi: Make WSI per-physical-device rather than per-instance
> anv/wayland: Don't allow non-renderable formats
> anv: Make format_for_descriptor return an isl_format
> anv/image: Add an aspects field
> anv/image: Use get_isl_format when creating buffer views
> anv: Add helpers to provide simple VkFormat introspection
> anv: Change render_pass_attachment.format to a VkFormat
> anv/copy: Use the color_surf from the image to get the block size
> anv/image: Make heavier use of aspects
> anv/image: Stop using anv_format for image create validation
> anv/copy: Use the linear format from the image for the buffer block
> size
> anv/wsi: Use vk_format_info for asserts rather than anv_format
> anv: Remove the anv_format member from anv_image
> anv/image: Use aspects for computing full usage
> anv/formats: Delete validate_GetPhysicalDeviceFormatProperties
> anv/format: Simplify anv_format
> anv/formats: Add an anv_get_format helper
> anv/formats: Use the isl_channel_select enum for the swizzle
> anv: Use 16 bits for the isl_format in anv_format
> anv/formats: Refactor anv_get_format
> anv/formats: Set the swizzle to RGB1 when using an RGBA format to fake
> RGB
> anv: Add a devinfo argument to the get_format functions
> anv/formats: Add support for VK_FORMAT_B4G4R4A4_UNORM pre-gen8
>
> src/intel/vulkan/Makefile.sources | 3 +-
> src/intel/vulkan/anv_cmd_buffer.c | 23 ++--
> src/intel/vulkan/anv_descriptor_set.c | 6 +-
> src/intel/vulkan/anv_device.c | 9 +-
> src/intel/vulkan/anv_formats.c | 209 +++++++++++++++++-----------------
> src/intel/vulkan/anv_image.c | 149 ++++++++++--------------
> src/intel/vulkan/anv_meta_copy.c | 34 ++++--
> src/intel/vulkan/anv_meta_resolve.c | 4 +-
> src/intel/vulkan/anv_pass.c | 2 +-
> src/intel/vulkan/anv_private.h | 63 ++++------
> src/intel/vulkan/anv_wsi.c | 27 +++--
> src/intel/vulkan/anv_wsi.h | 8 +-
> src/intel/vulkan/anv_wsi_wayland.c | 50 ++++----
> src/intel/vulkan/anv_wsi_x11.c | 43 +++----
> src/intel/vulkan/gen7_cmd_buffer.c | 5 +-
> src/intel/vulkan/genX_cmd_buffer.c | 7 +-
> src/intel/vulkan/genX_pipeline_util.h | 6 +-
> src/intel/vulkan/vk_format_info.h | 65 +++++++++++
> 18 files changed, 384 insertions(+), 329 deletions(-)
> create mode 100644 src/intel/vulkan/vk_format_info.h
>
> --
> 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