Merge 'Preserve compression control rate flags' into 'main'

See merge request mesa/vulkan-wsi-layer!236
This commit is contained in:
Rosen Zhelev 2026-05-14 18:47:16 +01:00
commit a6e964002a
2 changed files with 16 additions and 9 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2024-2025 Arm Limited.
* Copyright (c) 2024-2026 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@ -38,11 +38,15 @@ namespace wsi
{
image_create_compression_control::image_create_compression_control(const VkImageCompressionControlEXT &extension)
: m_compression_control{ VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT, nullptr, extension.flags,
extension.compressionControlPlaneCount, m_array_fixed_rate_flags }
extension.compressionControlPlaneCount, nullptr }
{
for (uint32_t i = 0; i < extension.compressionControlPlaneCount; i++)
if ((extension.flags & VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT) != 0)
{
m_compression_control.pFixedRateFlags[i] = extension.pFixedRateFlags[i];
m_compression_control.pFixedRateFlags = m_array_fixed_rate_flags;
for (uint32_t i = 0; i < extension.compressionControlPlaneCount; i++)
{
m_compression_control.pFixedRateFlags[i] = extension.pFixedRateFlags[i];
}
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2025 Arm Limited.
* Copyright (c) 2025-2026 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@ -32,7 +32,6 @@
#pragma once
#include <optional>
#include <utility>
#include <util/custom_allocator.hpp>
#include <util/macros.hpp>
@ -71,10 +70,14 @@ public:
}
auto compression_control = image_create_compression_control(extension);
std::swap(m_compression_control, compression_control.m_compression_control);
for (uint32_t i = 0; i < compression_control.m_compression_control.compressionControlPlaneCount; i++)
m_compression_control = compression_control.m_compression_control;
if (compression_control.m_compression_control.pFixedRateFlags != nullptr)
{
m_compression_control.pFixedRateFlags[i] = compression_control.m_compression_control.pFixedRateFlags[i];
m_compression_control.pFixedRateFlags = m_array_fixed_rate_flags;
for (uint32_t i = 0; i < compression_control.m_compression_control.compressionControlPlaneCount; i++)
{
m_compression_control.pFixedRateFlags[i] = compression_control.m_compression_control.pFixedRateFlags[i];
}
}
return *this;