mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
anv: Refactor Android externalFormat handling in CreateYcbcrConversion
Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19950>
This commit is contained in:
parent
4121aa43c4
commit
9fc046a87d
1 changed files with 13 additions and 19 deletions
|
|
@ -1669,17 +1669,6 @@ VkResult anv_CreateSamplerYcbcrConversion(
|
|||
ANV_FROM_HANDLE(anv_device, device, _device);
|
||||
struct anv_ycbcr_conversion *conversion;
|
||||
|
||||
/* Search for VkExternalFormatANDROID and resolve the format. */
|
||||
struct anv_format *ext_format = NULL;
|
||||
const VkExternalFormatANDROID *ext_info =
|
||||
vk_find_struct_const(pCreateInfo->pNext, EXTERNAL_FORMAT_ANDROID);
|
||||
|
||||
uint64_t format = ext_info ? ext_info->externalFormat : 0;
|
||||
if (format) {
|
||||
assert(pCreateInfo->format == VK_FORMAT_UNDEFINED);
|
||||
ext_format = (struct anv_format *) (uintptr_t) format;
|
||||
}
|
||||
|
||||
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO);
|
||||
|
||||
conversion = vk_object_zalloc(&device->vk, pAllocator, sizeof(*conversion),
|
||||
|
|
@ -1691,10 +1680,19 @@ VkResult anv_CreateSamplerYcbcrConversion(
|
|||
conversion->ycbcr_model = pCreateInfo->ycbcrModel;
|
||||
conversion->ycbcr_range = pCreateInfo->ycbcrRange;
|
||||
|
||||
/* The Vulkan 1.1.95 spec says "When creating an external format conversion,
|
||||
* the value of components if ignored."
|
||||
*/
|
||||
if (!ext_format) {
|
||||
/* Search for VkExternalFormatANDROID and resolve the format. */
|
||||
const VkExternalFormatANDROID *ext_info =
|
||||
vk_find_struct_const(pCreateInfo->pNext, EXTERNAL_FORMAT_ANDROID);
|
||||
|
||||
if (ext_info && ext_info->externalFormat) {
|
||||
assert(pCreateInfo->format == VK_FORMAT_UNDEFINED);
|
||||
conversion->format = (struct anv_format *) (uintptr_t) ext_info->externalFormat;
|
||||
} else {
|
||||
/* The Vulkan 1.1.95 spec says
|
||||
*
|
||||
* "When creating an external format conversion, the value of
|
||||
* components if ignored."
|
||||
*/
|
||||
conversion->mapping[0] = pCreateInfo->components.r;
|
||||
conversion->mapping[1] = pCreateInfo->components.g;
|
||||
conversion->mapping[2] = pCreateInfo->components.b;
|
||||
|
|
@ -1705,10 +1703,6 @@ VkResult anv_CreateSamplerYcbcrConversion(
|
|||
conversion->chroma_offsets[1] = pCreateInfo->yChromaOffset;
|
||||
conversion->chroma_filter = pCreateInfo->chromaFilter;
|
||||
|
||||
/* Setup external format. */
|
||||
if (ext_format)
|
||||
conversion->format = ext_format;
|
||||
|
||||
bool has_chroma_subsampled = false;
|
||||
for (uint32_t p = 0; p < conversion->format->n_planes; p++) {
|
||||
if (conversion->format->planes[p].has_chroma &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue