[Mesa-dev] [PATCH v2 0/9] Implementation of the VK_EXT_sample_locations

Eleni Maria Stea estea at igalia.com
Tue Mar 12 10:34:45 UTC 2019


Implemented the requirements from the VK_EXT_sample_locations extension
specification to allow setting custom sample locations on Intel Gen >= 7.

Some decisions explained:

The grid size was set to 1x1 because the hardware only supports a single
set of sample locations for the whole framebuffer.

The user can only set custom sample locations per pipeline by filling
the extension provided structs or dynamically the way it is described
in the sections 26.5, 36.1, 36.2 of the Vulkan specification.

Sections 6.7.3 and 7.4 describe how to use sample locations with images
when a layout transition is about to take place. These sections were
ignored as currently we aren't using sample locations with images in the
driver.

Variable sample locations aren't required and have not been implemented.

We have 754 vk-gl-cts tests for this extension:
The 690 pass on Gen >= 9 (where we can support 16 samples).
The remaining 64 tests aren't supported because they test the variable
sample locations.

Eleni Maria Stea (9):
  anv: Added the VK_EXT_sample_locations extension to the anv_extensions
    list
  anv: Set the values for the
    VkPhysicalDeviceSampleLocationsPropertiesEXT
  anv: Implemented the vkGetPhysicalDeviceMultisamplePropertiesEXT
  anv: Added support for non-dynamic sample locations on Gen8+
  anv: Added support for dynamic sample locations on Gen8+
  anv: Added support for dynamic and non-dynamic sample locations on
    Gen7
  anv: Optimized the emission of the default locations on Gen8+
  anv: Removed unused header file
  anv: Enabled the VK_EXT_sample_locations extension

 src/intel/Makefile.sources              |   1 +
 src/intel/common/gen_sample_positions.h |  53 ++++++++++
 src/intel/vulkan/anv_cmd_buffer.c       |  19 ++++
 src/intel/vulkan/anv_device.c           |  21 ++++
 src/intel/vulkan/anv_extensions.py      |   1 +
 src/intel/vulkan/anv_genX.h             |   7 ++
 src/intel/vulkan/anv_private.h          |  18 ++++
 src/intel/vulkan/anv_sample_locations.c |  96 ++++++++++++++++++
 src/intel/vulkan/anv_sample_locations.h |  29 ++++++
 src/intel/vulkan/genX_blorp_exec.c      |   1 -
 src/intel/vulkan/genX_cmd_buffer.c      |  24 +++++
 src/intel/vulkan/genX_pipeline.c        |  92 +++++++++--------
 src/intel/vulkan/genX_state.c           | 128 ++++++++++++++++++++++++
 src/intel/vulkan/meson.build            |   1 +
 14 files changed, 450 insertions(+), 41 deletions(-)
 create mode 100644 src/intel/vulkan/anv_sample_locations.c
 create mode 100644 src/intel/vulkan/anv_sample_locations.h

-- 
2.20.1



More information about the mesa-dev mailing list