vulkan.h: v129 -- rework clear colors, remove raw clear [#14020]
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 08f9dbf..e421efe 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -1164,17 +1164,13 @@
class VkCmdClearColorImageTest : public VkCmdBlitImageTest {
protected:
- VkCmdClearColorImageTest() : test_raw_(false) {}
- VkCmdClearColorImageTest(bool test_raw) : test_raw_(test_raw) {}
+ VkCmdClearColorImageTest() {}
virtual void SetUp()
{
VkCmdBlitTest::SetUp();
- if (test_raw_)
- init_test_formats();
- else
- init_test_formats(VK_FORMAT_FEATURE_CONVERSION_BIT);
+ init_test_formats(VK_FORMAT_FEATURE_CONVERSION_BIT);
ASSERT_NE(true, test_formats_.empty());
}
@@ -1184,25 +1180,23 @@
uint32_t raw[4];
};
- bool test_raw_;
-
- std::vector<uint8_t> color_to_raw(VkFormat format, const float color[4])
+ std::vector<uint8_t> color_to_raw(VkFormat format, const VkClearColorValue &color)
{
std::vector<uint8_t> raw;
// TODO support all formats
switch (format) {
case VK_FORMAT_R8G8B8A8_UNORM:
- raw.push_back((uint8_t)(color[0] * 255.0f));
- raw.push_back((uint8_t)(color[1] * 255.0f));
- raw.push_back((uint8_t)(color[2] * 255.0f));
- raw.push_back((uint8_t)(color[3] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[0] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[1] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[2] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[3] * 255.0f));
break;
case VK_FORMAT_B8G8R8A8_UNORM:
- raw.push_back((uint8_t)(color[2] * 255.0f));
- raw.push_back((uint8_t)(color[1] * 255.0f));
- raw.push_back((uint8_t)(color[0] * 255.0f));
- raw.push_back((uint8_t)(color[3] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[2] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[1] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[0] * 255.0f));
+ raw.push_back((uint8_t)(color.f32[3] * 255.0f));
break;
default:
break;
@@ -1211,41 +1205,8 @@
return raw;
}
- std::vector<uint8_t> color_to_raw(VkFormat format, const uint32_t color[4])
- {
- std::vector<uint8_t> raw;
-
- // TODO support all formats
- switch (format) {
- case VK_FORMAT_R8G8B8A8_UNORM:
- raw.push_back(static_cast<uint8_t>(color[0]));
- raw.push_back(static_cast<uint8_t>(color[1]));
- raw.push_back(static_cast<uint8_t>(color[2]));
- raw.push_back(static_cast<uint8_t>(color[3]));
- break;
- case VK_FORMAT_B8G8R8A8_UNORM:
- raw.push_back(static_cast<uint8_t>(color[2]));
- raw.push_back(static_cast<uint8_t>(color[1]));
- raw.push_back(static_cast<uint8_t>(color[0]));
- raw.push_back(static_cast<uint8_t>(color[3]));
- break;
- default:
- break;
- }
-
- return raw;
- }
-
- std::vector<uint8_t> color_to_raw(VkFormat format, const VkClearColor &color)
- {
- if (color.useRawValue)
- return color_to_raw(format, color.color.rawColor);
- else
- return color_to_raw(format, color.color.floatColor);
- }
-
void test_clear_color_image(const VkImageCreateInfo &img_info,
- const VkClearColor &clear_color,
+ const VkClearColorValue &clear_color,
const std::vector<VkImageSubresourceRange> &ranges)
{
vk_testing::Image img;
@@ -1322,8 +1283,8 @@
const float color[4],
const std::vector<VkImageSubresourceRange> &ranges)
{
- VkClearColor c = {};
- memcpy(c.color.floatColor, color, sizeof(c.color.floatColor));
+ VkClearColorValue c = {};
+ memcpy(c.f32, color, sizeof(c.f32));
test_clear_color_image(img_info, c, ranges);
}
};
@@ -1361,70 +1322,6 @@
}
}
-class VkCmdClearColorImageRawTest : public VkCmdClearColorImageTest {
-protected:
- VkCmdClearColorImageRawTest() : VkCmdClearColorImageTest(true) {}
-
- void test_clear_color_image_raw(const VkImageCreateInfo &img_info,
- const uint32_t color[4],
- const std::vector<VkImageSubresourceRange> &ranges)
- {
- VkClearColor c = {};
- c.useRawValue = true;
- memcpy(c.color.rawColor, color, sizeof(c.color.rawColor));
- test_clear_color_image(img_info, c, ranges);
- }
-};
-
-TEST_F(VkCmdClearColorImageRawTest, Basic)
-{
- for (std::vector<vk_testing::Device::Format>::const_iterator it = test_formats_.begin();
- it != test_formats_.end(); it++) {
- const uint32_t color[4] = { 0x11111111, 0x22222222, 0x33333333, 0x44444444 };
- VkFormatProperties props;
- VkResult err;
-
- err = vkGetPhysicalDeviceFormatInfo(dev_.gpu().obj(), it->format, &props);
- ASSERT_EQ(err, VK_SUCCESS);
-
- if (it->tiling == VK_IMAGE_TILING_LINEAR && !(props.linearTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT))
- continue;
-
- if (it->tiling == VK_IMAGE_TILING_OPTIMAL && !(props.optimalTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT))
- continue;
-
- // not sure what to do here
- if (it->format == VK_FORMAT_UNDEFINED ||
- (it->format >= VK_FORMAT_R8G8B8_UNORM &&
- it->format <= VK_FORMAT_R8G8B8_SRGB) ||
- (it->format >= VK_FORMAT_B8G8R8_UNORM &&
- it->format <= VK_FORMAT_B8G8R8_SRGB) ||
- (it->format >= VK_FORMAT_R16G16B16_UNORM &&
- it->format <= VK_FORMAT_R16G16B16_SFLOAT) ||
- (it->format >= VK_FORMAT_R32G32B32_UINT &&
- it->format <= VK_FORMAT_R32G32B32_SFLOAT) ||
- it->format == VK_FORMAT_R64G64B64_SFLOAT ||
- it->format == VK_FORMAT_R64G64B64A64_SFLOAT ||
- (it->format >= VK_FORMAT_D16_UNORM &&
- it->format <= VK_FORMAT_D32_SFLOAT_S8_UINT))
- continue;
-
- VkImageCreateInfo img_info = vk_testing::Image::create_info();
- img_info.imageType = VK_IMAGE_TYPE_2D;
- img_info.format = it->format;
- img_info.extent.width = 64;
- img_info.extent.height = 64;
- img_info.tiling = it->tiling;
- img_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
-
- const VkImageSubresourceRange range =
- vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_COLOR);
- std::vector<VkImageSubresourceRange> ranges(&range, &range + 1);
-
- test_clear_color_image_raw(img_info, color, ranges);
- }
-}
-
class VkCmdClearDepthStencilTest : public VkCmdBlitImageTest {
protected:
virtual void SetUp()