<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Sep 15, 2017 at 7:11 AM, Lionel Landwerlin <span dir="ltr"><<a href="mailto:lionel.g.landwerlin@intel.com" target="_blank">lionel.g.landwerlin@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Adding new downsampling factors for each planes.<br>
<br>
Signed-off-by: Lionel Landwerlin <<a href="mailto:lionel.g.landwerlin@intel.com">lionel.g.landwerlin@intel.com</a><wbr>><br>
---<br>
src/intel/vulkan/anv_formats.c | 158 ++++++++++++++++++++++++++++++<wbr>++++++--<br>
src/intel/vulkan/anv_private.h | 10 +++<br>
src/intel/vulkan/vk_format_<wbr>info.h | 27 +++++++<br>
3 files changed, 189 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/src/intel/vulkan/anv_<wbr>formats.c b/src/intel/vulkan/anv_<wbr>formats.c<br>
index b311e15ce3f..d828294c5e8 100644<br>
--- a/src/intel/vulkan/anv_<wbr>formats.c<br>
+++ b/src/intel/vulkan/anv_<wbr>formats.c<br>
@@ -22,6 +22,7 @@<br>
*/<br>
<br>
#include "anv_private.h"<br>
+#include "vk_enum_to_str.h"<br>
#include "vk_format_info.h"<br>
#include "vk_util.h"<br>
<br>
@@ -44,14 +45,12 @@<br>
#define BGRA _ISL_SWIZZLE(BLUE, GREEN, RED, ALPHA)<br>
#define RGB1 _ISL_SWIZZLE(RED, GREEN, BLUE, ONE)<br>
<br>
-#define _fmt(__hw_fmt, __swizzle) \<br>
- { .isl_format = __hw_fmt, \<br>
- .swizzle = __swizzle }<br>
-<br>
#define swiz_fmt1(__vk_fmt, __hw_fmt, __swizzle) \<br>
[vk_enum_offset(__vk_fmt)] = { \<br>
.planes = { \<br>
- { .isl_format = __hw_fmt, .swizzle = __swizzle }, \<br>
+ { .isl_format = __hw_fmt, .swizzle = __swizzle, \<br>
+ .denominator_scales = { 1, 1, }, \<br>
+ }, \<br>
}, \<br>
.n_planes = 1, \<br>
}<br>
@@ -64,14 +63,41 @@<br>
.planes = { \<br>
{ .isl_format = __depth_fmt, \<br>
.swizzle = RGBA, \<br>
+ .denominator_scales = { 1, 1, }, \<br>
}, \<br>
{ .isl_format = __stencil_fmt, \<br>
.swizzle = RGBA, \<br>
+ .denominator_scales = { 1, 1, }, \<br>
}, \<br>
}, \<br>
.n_planes = 2, \<br>
}<br>
<br>
+#define y_plane(__hw_fmt, __swizzle, __ycbcr_swizzle, dhs, dvs) \<br>
+ { .isl_format = __hw_fmt, \<br>
+ .swizzle = __swizzle, \<br>
+ .ycbcr_swizzle = __ycbcr_swizzle, \<br>
+ .denominator_scales = { dhs, dvs, }, \<br>
+ .has_chroma = false, \<br>
+ }<br>
+<br>
+#define chroma_plane(__hw_fmt, __swizzle, __ycbcr_swizzle, dhs, dvs) \<br>
+ { .isl_format = __hw_fmt, \<br>
+ .swizzle = __swizzle, \<br>
+ .ycbcr_swizzle = __ycbcr_swizzle, \<br>
+ .denominator_scales = { dhs, dvs, }, \<br>
+ .has_chroma = true, \<br>
+ }<br>
+<br>
+#define ycbcr_fmt(__vk_fmt, __n_planes, ...) \<br>
+ [vk_enum_offset(__vk_fmt)] = { \<br>
+ .planes = { \<br>
+ __VA_ARGS__, \<br>
+ }, \<br>
+ .n_planes = __n_planes, \<br>
+ .can_ycbcr = true, \<br>
+ }<br>
+<br>
/* HINT: For array formats, the ISL name should match the VK name. For<br>
* packed formats, they should have the channels in reverse order from each<br>
* other. The reason for this is that, for packed formats, the ISL (and<br>
@@ -267,11 +293,84 @@ static const struct anv_format main_formats[] = {<br>
fmt1(VK_FORMAT_B8G8R8A8_SRGB, ISL_FORMAT_B8G8R8A8_UNORM_<wbr>SRGB),<br>
};<br>
<br>
+static const struct anv_format ycbcr_formats[] = {<br>
+ ycbcr_fmt(VK_FORMAT_G8B8G8R8_<wbr>422_UNORM_KHR, 1,<br>
+ y_plane(ISL_FORMAT_YCRCB_<wbr>SWAPUV, RGBA, _ISL_SWIZZLE(BLUE, GREEN, RED, ZERO), 1, 1)),<br>
+ ycbcr_fmt(VK_FORMAT_B8G8R8G8_<wbr>422_UNORM_KHR, 1,<br>
+ y_plane(ISL_FORMAT_YCRCB_<wbr>SWAPUVY, RGBA, _ISL_SWIZZLE(BLUE, GREEN, RED, ZERO), 1, 1)),<br>
+ ycbcr_fmt(VK_FORMAT_G8_B8_R8_<wbr>3PLANE_420_UNORM_KHR, 3,<br>
+ y_plane(ISL_FORMAT_R8_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, ZERO, ZERO, ZERO), 2, 2),<br>
+ chroma_plane(ISL_FORMAT_R8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(RED, ZERO, ZERO, ZERO), 2, 2)),<br>
+ ycbcr_fmt(VK_FORMAT_G8_B8R8_<wbr>2PLANE_420_UNORM_KHR, 2,<br>
+ y_plane(ISL_FORMAT_R8_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R8G8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, RED, ZERO, ZERO), 2, 2)),<br>
+ ycbcr_fmt(VK_FORMAT_G8_B8_R8_<wbr>3PLANE_422_UNORM_KHR, 3,<br>
+ y_plane(ISL_FORMAT_R8_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, ZERO, ZERO, ZERO), 2, 1),<br>
+ chroma_plane(ISL_FORMAT_R8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(RED, ZERO, ZERO, ZERO), 2, 1)),<br>
+ ycbcr_fmt(VK_FORMAT_G8_B8R8_<wbr>2PLANE_422_UNORM_KHR, 2,<br>
+ y_plane(ISL_FORMAT_R8_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R8G8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, RED, ZERO, ZERO), 2, 1)),<br>
+ ycbcr_fmt(VK_FORMAT_G8_B8_R8_<wbr>3PLANE_444_UNORM_KHR, 3,<br>
+ y_plane(ISL_FORMAT_R8_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R8_<wbr>UNORM, RGBA, _ISL_SWIZZLE(RED, ZERO, ZERO, ZERO), 1, 1)),<br>
+<br>
+ fmt1(VK_FORMAT_R10X6_UNORM_<wbr>PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_R10X6G10X6_<wbr>UNORM_2PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_<wbr>R10X6G10X6B10X6A10X6_UNORM_<wbr>4PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_<wbr>G10X6B10X6G10X6R10X6_422_<wbr>UNORM_4PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_<wbr>B10X6G10X6R10X6G10X6_422_<wbr>UNORM_4PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G10X6_B10X6_<wbr>R10X6_3PLANE_420_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G10X6_<wbr>B10X6R10X6_2PLANE_420_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G10X6_B10X6_<wbr>R10X6_3PLANE_422_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G10X6_<wbr>B10X6R10X6_2PLANE_422_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G10X6_B10X6_<wbr>R10X6_3PLANE_444_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_R12X4_UNORM_<wbr>PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_R12X4G12X4_<wbr>UNORM_2PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_<wbr>R12X4G12X4B12X4A12X4_UNORM_<wbr>4PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_<wbr>G12X4B12X4G12X4R12X4_422_<wbr>UNORM_4PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_<wbr>B12X4G12X4R12X4G12X4_422_<wbr>UNORM_4PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G12X4_B12X4_<wbr>R12X4_3PLANE_420_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G12X4_<wbr>B12X4R12X4_2PLANE_420_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G12X4_B12X4_<wbr>R12X4_3PLANE_422_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G12X4_<wbr>B12X4R12X4_2PLANE_422_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_G12X4_B12X4_<wbr>R12X4_3PLANE_444_UNORM_<wbr>3PACK16_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ /* TODO: it is possible to enable the following 2 formats, but that<br>
+ * requires further refactoring of how we handle multiplanar formats.<br>
+ */<br>
+ fmt1(VK_FORMAT_G16B16G16R16_<wbr>422_UNORM_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+ fmt1(VK_FORMAT_B16G16R16G16_<wbr>422_UNORM_KHR, ISL_FORMAT_UNSUPPORTED),<br>
+<br>
+ ycbcr_fmt(VK_FORMAT_G16_B16_<wbr>R16_3PLANE_420_UNORM_KHR, 3,<br>
+ y_plane(ISL_FORMAT_R16_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R16_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, ZERO, ZERO, ZERO), 2, 2),<br>
+ chroma_plane(ISL_FORMAT_R16_<wbr>UNORM, RGBA, _ISL_SWIZZLE(RED, ZERO, ZERO, ZERO), 2, 2)),<br>
+ ycbcr_fmt(VK_FORMAT_G16_<wbr>B16R16_2PLANE_420_UNORM_KHR, 2,<br>
+ y_plane(ISL_FORMAT_R16_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_<wbr>R16G16_UNORM, RGBA, _ISL_SWIZZLE(BLUE, RED, ZERO, ZERO), 2, 2)),<br>
+ ycbcr_fmt(VK_FORMAT_G16_B16_<wbr>R16_3PLANE_422_UNORM_KHR, 3,<br>
+ y_plane(ISL_FORMAT_R16_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R16_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, ZERO, ZERO, ZERO), 2, 1),<br>
+ chroma_plane(ISL_FORMAT_R16_<wbr>UNORM, RGBA, _ISL_SWIZZLE(RED, ZERO, ZERO, ZERO), 2, 1)),<br>
+ ycbcr_fmt(VK_FORMAT_G16_<wbr>B16R16_2PLANE_422_UNORM_KHR, 2,<br>
+ y_plane(ISL_FORMAT_R16_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_<wbr>R16G16_UNORM, RGBA, _ISL_SWIZZLE(BLUE, RED, ZERO, ZERO), 2, 1)),<br>
+ ycbcr_fmt(VK_FORMAT_G16_B16_<wbr>R16_3PLANE_444_UNORM_KHR, 3,<br>
+ y_plane(ISL_FORMAT_R16_UNORM, RGBA, _ISL_SWIZZLE(GREEN, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R16_<wbr>UNORM, RGBA, _ISL_SWIZZLE(BLUE, ZERO, ZERO, ZERO), 1, 1),<br>
+ chroma_plane(ISL_FORMAT_R16_<wbr>UNORM, RGBA, _ISL_SWIZZLE(RED, ZERO, ZERO, ZERO), 1, 1)),<br>
+};<br>
+<br>
static const struct {<br>
const struct anv_format *formats;<br>
uint32_t n_formats;<br>
} anv_formats[] = {<br>
- [0] = { .formats = main_formats, .n_formats = ARRAY_SIZE(main_formats), },<br>
+ [0] = { .formats = main_formats,<br>
+ .n_formats = ARRAY_SIZE(main_formats), },<br>
+ [_VK_KHR_sampler_ycbcr_<wbr>conversion_number] = { .formats = ycbcr_formats,<br>
+ .n_formats = ARRAY_SIZE(ycbcr_formats), },<br>
};<br>
<br>
#undef _fmt<br>
@@ -485,6 +584,53 @@ anv_physical_device_get_<wbr>format_properties(struct anv_physical_device *physical_d<br>
linear = 0;<br>
}<br>
<br>
+ if (format && format->can_ycbcr) {<br>
+ VkFormatFeatureFlags ycbcr_features = 0;<br>
+<br>
+ /* The sampler doesn't have support for mid point when it handles YUV on<br>
+ * its own.<br>
+ */<br>
+ if (isl_format_is_yuv(format-><wbr>planes[0].isl_format)) {<br>
+ /* TODO: We've disabled linear implicit reconstruction with the<br>
+ * sampler. The failures show a slightly out of range values on the<br>
+ * bottom left of the sampled image.<br>
+ */<br>
+ ycbcr_features |= VK_FORMAT_FEATURE_MIDPOINT_<wbr>CHROMA_SAMPLES_BIT_KHR;<br>
+ } else {<br>
+ ycbcr_features |= VK_FORMAT_FEATURE_SAMPLED_<wbr>IMAGE_YCBCR_CONVERSION_LINEAR_<wbr>FILTER_BIT_KHR |<br>
+ VK_FORMAT_FEATURE_MIDPOINT_<wbr>CHROMA_SAMPLES_BIT_KHR |<br>
+ VK_FORMAT_FEATURE_SAMPLED_<wbr>IMAGE_YCBCR_CONVERSION_<wbr>SEPARATE_RECONSTRUCTION_<wbr>FILTER_BIT_KHR;<br>
+ }<br>
+<br>
+ /* We can support cosited chroma locations when handle planes with our<br>
+ * own shader snippets.<br>
+ */<br>
+ for (unsigned p = 0; p < format->n_planes; p++) {<br>
+ if (format->planes[p].<wbr>denominator_scales[0] > 1 ||<br>
+ format->planes[p].denominator_<wbr>scales[1] > 1) {<br>
+ ycbcr_features |= VK_FORMAT_FEATURE_COSITED_<wbr>CHROMA_SAMPLES_BIT_KHR;<br>
+ break;<br>
+ }<br>
+ }<br>
+<br>
+ if (format->n_planes > 1)<br>
+ ycbcr_features |= VK_FORMAT_FEATURE_DISJOINT_<wbr>BIT_KHR;<br>
+<br>
+ linear |= ycbcr_features;<br>
+ tiled |= ycbcr_features;<br>
+<br>
+ const VkFormatFeatureFlags disallowed_ycbcr_image_<wbr>features =<br>
+ VK_FORMAT_FEATURE_BLIT_SRC_BIT |<br>
+ VK_FORMAT_FEATURE_BLIT_DST_BIT |<br>
+ VK_FORMAT_FEATURE_COLOR_<wbr>ATTACHMENT_BIT |<br>
+ VK_FORMAT_FEATURE_COLOR_<wbr>ATTACHMENT_BLEND_BIT |<br>
+ VK_FORMAT_FEATURE_STORAGE_<wbr>IMAGE_BIT;<br>
+<br>
+ linear &= ~disallowed_ycbcr_image_<wbr>features;<br>
+ tiled &= ~disallowed_ycbcr_image_<wbr>features;<br>
+ buffer = 0;<br>
+ }<br>
+<br>
out_properties-><wbr>linearTilingFeatures = linear;<br>
out_properties-><wbr>optimalTilingFeatures = tiled;<br>
out_properties->bufferFeatures = buffer;<br>
diff --git a/src/intel/vulkan/anv_<wbr>private.h b/src/intel/vulkan/anv_<wbr>private.h<br>
index fde562294c0..a4b263cea5e 100644<br>
--- a/src/intel/vulkan/anv_<wbr>private.h<br>
+++ b/src/intel/vulkan/anv_<wbr>private.h<br>
@@ -2162,12 +2162,22 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline,<br>
struct anv_format_plane {<br>
enum isl_format isl_format:16;<br>
struct isl_swizzle swizzle;<br>
+<br>
+ /* Whether this plane contains chroma channels */<br>
+ bool has_chroma;<br>
+<br>
+ /* For downscaling of YUV planes */<br>
+ uint8_t denominator_scales[2];<br>
+<br>
+ /* How to map sampled ycbcr planes to a single 4 component element. */<br>
+ struct isl_swizzle ycbcr_swizzle;<br></blockquote><div><br></div><div>I'm getting a bit concerned about how bloated the format table is getting. The old table had 184 entries each of which was 32 bits. Now we're looking at more like 32 bytes per entry and most of it isn't used for your average format. It probably isn't a huge deal but it does seem a bit excessive. I'm not quite sure what to do about it though.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
};<br>
<br>
<br>
struct anv_format {<br>
struct anv_format_plane planes[3];<br>
uint8_t n_planes;<br>
+ bool can_ycbcr;<br>
};<br>
<br>
static inline uint32_t<br>
diff --git a/src/intel/vulkan/vk_format_<wbr>info.h b/src/intel/vulkan/vk_format_<wbr>info.h<br>
index a680a6f24b3..167938ac109 100644<br>
--- a/src/intel/vulkan/vk_format_<wbr>info.h<br>
+++ b/src/intel/vulkan/vk_format_<wbr>info.h<br>
@@ -47,6 +47,33 @@ vk_format_aspects(VkFormat format)<br>
case VK_FORMAT_D32_SFLOAT:<br>
return VK_IMAGE_ASPECT_DEPTH_BIT;<br>
<br>
+ case VK_FORMAT_G8_B8_R8_3PLANE_420_<wbr>UNORM_KHR:<br>
+ case VK_FORMAT_G8_B8_R8_3PLANE_422_<wbr>UNORM_KHR:<br>
+ case VK_FORMAT_G8_B8_R8_3PLANE_444_<wbr>UNORM_KHR:<br>
+ case VK_FORMAT_G10X6_B10X6_R10X6_<wbr>3PLANE_420_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G10X6_B10X6_R10X6_<wbr>3PLANE_422_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G10X6_B10X6_R10X6_<wbr>3PLANE_444_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G12X4_B12X4_R12X4_<wbr>3PLANE_420_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G12X4_B12X4_R12X4_<wbr>3PLANE_422_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G12X4_B12X4_R12X4_<wbr>3PLANE_444_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G16_B16_R16_3PLANE_<wbr>420_UNORM_KHR:<br>
+ case VK_FORMAT_G16_B16_R16_3PLANE_<wbr>422_UNORM_KHR:<br>
+ case VK_FORMAT_G16_B16_R16_3PLANE_<wbr>444_UNORM_KHR:<br>
+ return (VK_IMAGE_ASPECT_PLANE_0_BIT_<wbr>KHR |<br>
+ VK_IMAGE_ASPECT_PLANE_1_BIT_<wbr>KHR |<br>
+ VK_IMAGE_ASPECT_PLANE_2_BIT_<wbr>KHR);<br>
+<br>
+ case VK_FORMAT_G8_B8R8_2PLANE_420_<wbr>UNORM_KHR:<br>
+ case VK_FORMAT_G8_B8R8_2PLANE_422_<wbr>UNORM_KHR:<br>
+ case VK_FORMAT_G10X6_B10X6R10X6_<wbr>2PLANE_420_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G10X6_B10X6R10X6_<wbr>2PLANE_422_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G12X4_B12X4R12X4_<wbr>2PLANE_420_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G12X4_B12X4R12X4_<wbr>2PLANE_422_UNORM_3PACK16_KHR:<br>
+ case VK_FORMAT_G16_B16R16_2PLANE_<wbr>420_UNORM_KHR:<br>
+ case VK_FORMAT_G16_B16R16_2PLANE_<wbr>422_UNORM_KHR:<br>
+ return (VK_IMAGE_ASPECT_PLANE_0_BIT_<wbr>KHR |<br>
+ VK_IMAGE_ASPECT_PLANE_1_BIT_<wbr>KHR);<br>
+<br>
default:<br>
return VK_IMAGE_ASPECT_COLOR_BIT;<br>
}<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.14.1<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>