Skip to content

Commit

Permalink
Back out "Move functions from Common to TextureFormat"
Browse files Browse the repository at this point in the history
Summary:
Original commit changeset: 781aa7dd9a28

Original Phabricator Diff: D62810776

Reviewed By: ChristianK275, corporateshark

Differential Revision: D63074123

fbshipit-source-id: ed3fb1b52f4de8c81dc2416941029bb632970b0e
  • Loading branch information
francoiscoulombe authored and facebook-github-bot committed Sep 20, 2024
1 parent c712cf5 commit c9c0023
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 54 deletions.
36 changes: 18 additions & 18 deletions src/igl/tests/vulkan/TextureFormat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,32 @@

namespace igl::vulkan::tests {
TEST(TextureFormatUtilTest, invertRedAndBlue) {
ASSERT_EQ(VK_FORMAT_B8G8R8A8_UNORM, util::invertRedAndBlue(VK_FORMAT_R8G8B8A8_UNORM));
ASSERT_EQ(VK_FORMAT_R8G8B8A8_UNORM, util::invertRedAndBlue(VK_FORMAT_B8G8R8A8_UNORM));
ASSERT_EQ(VK_FORMAT_R8G8B8A8_SRGB, util::invertRedAndBlue(VK_FORMAT_B8G8R8A8_SRGB));
ASSERT_EQ(VK_FORMAT_B8G8R8A8_SRGB, util::invertRedAndBlue(VK_FORMAT_R8G8B8A8_SRGB));
ASSERT_EQ(VK_FORMAT_B8G8R8A8_UNORM, invertRedAndBlue(VK_FORMAT_R8G8B8A8_UNORM));
ASSERT_EQ(VK_FORMAT_R8G8B8A8_UNORM, invertRedAndBlue(VK_FORMAT_B8G8R8A8_UNORM));
ASSERT_EQ(VK_FORMAT_R8G8B8A8_SRGB, invertRedAndBlue(VK_FORMAT_B8G8R8A8_SRGB));
ASSERT_EQ(VK_FORMAT_B8G8R8A8_SRGB, invertRedAndBlue(VK_FORMAT_R8G8B8A8_SRGB));
ASSERT_EQ(VK_FORMAT_A2R10G10B10_UNORM_PACK32,
util::invertRedAndBlue(VK_FORMAT_A2B10G10R10_UNORM_PACK32));
invertRedAndBlue(VK_FORMAT_A2B10G10R10_UNORM_PACK32));
ASSERT_EQ(VK_FORMAT_A2B10G10R10_UNORM_PACK32,
util::invertRedAndBlue(VK_FORMAT_A2R10G10B10_UNORM_PACK32));
invertRedAndBlue(VK_FORMAT_A2R10G10B10_UNORM_PACK32));
}

TEST(TextureFormatUtilTest, isTextureFormatRGB) {
ASSERT_TRUE(util::isTextureFormatRGB(VK_FORMAT_R8G8B8A8_UNORM));
ASSERT_TRUE(util::isTextureFormatRGB(VK_FORMAT_R8G8B8A8_SRGB));
ASSERT_TRUE(util::isTextureFormatRGB(VK_FORMAT_A2R10G10B10_UNORM_PACK32));
ASSERT_FALSE(util::isTextureFormatRGB(VK_FORMAT_B8G8R8A8_UNORM));
ASSERT_FALSE(util::isTextureFormatRGB(VK_FORMAT_B8G8R8A8_SRGB));
ASSERT_FALSE(util::isTextureFormatRGB(VK_FORMAT_A2B10G10R10_UNORM_PACK32));
ASSERT_TRUE(isTextureFormatRGB(VK_FORMAT_R8G8B8A8_UNORM));
ASSERT_TRUE(isTextureFormatRGB(VK_FORMAT_R8G8B8A8_SRGB));
ASSERT_TRUE(isTextureFormatRGB(VK_FORMAT_A2R10G10B10_UNORM_PACK32));
ASSERT_FALSE(isTextureFormatRGB(VK_FORMAT_B8G8R8A8_UNORM));
ASSERT_FALSE(isTextureFormatRGB(VK_FORMAT_B8G8R8A8_SRGB));
ASSERT_FALSE(isTextureFormatRGB(VK_FORMAT_A2B10G10R10_UNORM_PACK32));
}

TEST(TextureFormatUtilTest, isTextureFormatBGR) {
ASSERT_FALSE(util::isTextureFormatBGR(VK_FORMAT_R8G8B8A8_UNORM));
ASSERT_FALSE(util::isTextureFormatBGR(VK_FORMAT_R8G8B8A8_SRGB));
ASSERT_FALSE(util::isTextureFormatBGR(VK_FORMAT_A2R10G10B10_UNORM_PACK32));
ASSERT_TRUE(util::isTextureFormatBGR(VK_FORMAT_B8G8R8A8_UNORM));
ASSERT_TRUE(util::isTextureFormatBGR(VK_FORMAT_B8G8R8A8_SRGB));
ASSERT_TRUE(util::isTextureFormatBGR(VK_FORMAT_A2B10G10R10_UNORM_PACK32));
ASSERT_FALSE(isTextureFormatBGR(VK_FORMAT_R8G8B8A8_UNORM));
ASSERT_FALSE(isTextureFormatBGR(VK_FORMAT_R8G8B8A8_SRGB));
ASSERT_FALSE(isTextureFormatBGR(VK_FORMAT_A2R10G10B10_UNORM_PACK32));
ASSERT_TRUE(isTextureFormatBGR(VK_FORMAT_B8G8R8A8_UNORM));
ASSERT_TRUE(isTextureFormatBGR(VK_FORMAT_B8G8R8A8_SRGB));
ASSERT_TRUE(isTextureFormatBGR(VK_FORMAT_A2B10G10R10_UNORM_PACK32));
}

TEST(TextureFormatUtilTest, textureFormatToVkFormat) {
Expand Down
29 changes: 29 additions & 0 deletions src/igl/vulkan/Common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,25 @@ void setResultFrom(Result* outResult, VkResult result) {
*outResult = getResultFromVkResult(result);
}

VkFormat invertRedAndBlue(VkFormat format) {
switch (format) {
case VK_FORMAT_B8G8R8A8_UNORM:
return VK_FORMAT_R8G8B8A8_UNORM;
case VK_FORMAT_R8G8B8A8_UNORM:
return VK_FORMAT_B8G8R8A8_UNORM;
case VK_FORMAT_R8G8B8A8_SRGB:
return VK_FORMAT_B8G8R8A8_SRGB;
case VK_FORMAT_B8G8R8A8_SRGB:
return VK_FORMAT_R8G8B8A8_SRGB;
case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
return VK_FORMAT_A2R10G10B10_UNORM_PACK32;
default:
IGL_UNREACHABLE_RETURN(format);
}
}

VkStencilOp stencilOperationToVkStencilOp(igl::StencilOperation op) {
switch (op) {
case igl::StencilOperation::Keep:
Expand Down Expand Up @@ -276,6 +295,16 @@ VkFormat textureFormatToVkFormat(igl::TextureFormat format) {
IGL_UNREACHABLE_RETURN(VK_FORMAT_UNDEFINED)
}

bool isTextureFormatRGB(VkFormat format) {
return format == VK_FORMAT_R8G8B8A8_UNORM || format == VK_FORMAT_R8G8B8A8_SRGB ||
format == VK_FORMAT_A2R10G10B10_UNORM_PACK32;
}

bool isTextureFormatBGR(VkFormat format) {
return format == VK_FORMAT_B8G8R8A8_UNORM || format == VK_FORMAT_B8G8R8A8_SRGB ||
format == VK_FORMAT_A2B10G10R10_UNORM_PACK32;
}

igl::TextureFormat vkFormatToTextureFormat(VkFormat format) {
return util::vkTextureFormatToTextureFormat(format);
}
Expand Down
3 changes: 3 additions & 0 deletions src/igl/vulkan/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@ Result getResultFromVkResult(VkResult result);
void setResultFrom(Result* outResult, VkResult result);
VkFormat textureFormatToVkFormat(igl::TextureFormat format);
igl::TextureFormat vkFormatToTextureFormat(VkFormat format);
VkFormat invertRedAndBlue(VkFormat format);
bool isTextureFormatRGB(VkFormat format);
bool isTextureFormatBGR(VkFormat format);
uint32_t getNumImagePlanes(VkFormat format);
VkMemoryPropertyFlags resourceStorageToVkMemoryPropertyFlags(igl::ResourceStorage resourceStorage);
VkCompareOp compareFunctionToVkCompareOp(igl::CompareFunction func);
Expand Down
9 changes: 4 additions & 5 deletions src/igl/vulkan/VulkanSwapchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
#include <igl/vulkan/VulkanRenderPassBuilder.h>
#include <igl/vulkan/VulkanSemaphore.h>
#include <igl/vulkan/VulkanTexture.h>
#include <igl/vulkan/util/TextureFormat.h>

namespace {

Expand All @@ -36,10 +35,10 @@ bool isNativeSwapChainBGR(const std::vector<VkSurfaceFormatKHR>& formats) {
// The preferred format should be the one which is closer to the beginning of the formats
// container. If BGR is encountered earlier, it should be picked as the format of choice. If RGB
// happens to be earlier, take it.
if (igl::vulkan::util::isTextureFormatRGB(format.format)) {
if (igl::vulkan::isTextureFormatRGB(format.format)) {
return false;
}
if (igl::vulkan::util::isTextureFormatBGR(format.format)) {
if (igl::vulkan::isTextureFormatBGR(format.format)) {
return true;
}
}
Expand All @@ -53,9 +52,9 @@ VkSurfaceFormatKHR chooseSwapSurfaceFormat(const std::vector<VkSurfaceFormatKHR>

const bool isNativeSwapchainBGR = isNativeSwapChainBGR(formats);
auto vulkanTextureFormat = igl::vulkan::textureFormatToVkFormat(textureFormat);
const bool isRequestedFormatBGR = igl::vulkan::util::isTextureFormatBGR(vulkanTextureFormat);
const bool isRequestedFormatBGR = igl::vulkan::isTextureFormatBGR(vulkanTextureFormat);
if (isNativeSwapchainBGR != isRequestedFormatBGR) {
vulkanTextureFormat = igl::vulkan::util::invertRedAndBlue(vulkanTextureFormat);
vulkanTextureFormat = igl::vulkan::invertRedAndBlue(vulkanTextureFormat);
}
const auto preferred =
VkSurfaceFormatKHR{vulkanTextureFormat, igl::vulkan::colorSpaceToVkColorSpace(colorSpace)};
Expand Down
20 changes: 0 additions & 20 deletions src/igl/vulkan/util/TextureFormat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,24 +169,4 @@ TextureFormat vkTextureFormatToTextureFormat(VkFormat vkFormat) {
return TextureFormat::Invalid;
}

VkFormat invertRedAndBlue(VkFormat format) {
switch (format) {
case VK_FORMAT_B8G8R8A8_UNORM:
return VK_FORMAT_R8G8B8A8_UNORM;
case VK_FORMAT_R8G8B8A8_UNORM:
return VK_FORMAT_B8G8R8A8_UNORM;
case VK_FORMAT_R8G8B8A8_SRGB:
return VK_FORMAT_B8G8R8A8_SRGB;
case VK_FORMAT_B8G8R8A8_SRGB:
return VK_FORMAT_R8G8B8A8_SRGB;
case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
return VK_FORMAT_A2R10G10B10_UNORM_PACK32;
default:
IGL_ASSERT_NOT_REACHED();
return format;
}
}

} // namespace igl::vulkan::util
11 changes: 0 additions & 11 deletions src/igl/vulkan/util/TextureFormat.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,4 @@ namespace igl::vulkan::util {
/// @return The corresponding IGL format if known; otherwise returns TextureFormat::Invalid.
TextureFormat vkTextureFormatToTextureFormat(VkFormat vkFormat);

VkFormat invertRedAndBlue(VkFormat format);

inline bool isTextureFormatRGB(VkFormat format) {
return format == VK_FORMAT_R8G8B8A8_UNORM || format == VK_FORMAT_R8G8B8A8_SRGB ||
format == VK_FORMAT_A2R10G10B10_UNORM_PACK32;
}

inline bool isTextureFormatBGR(VkFormat format) {
return format == VK_FORMAT_B8G8R8A8_UNORM || format == VK_FORMAT_B8G8R8A8_SRGB ||
format == VK_FORMAT_A2B10G10R10_UNORM_PACK32;
}
} // namespace igl::vulkan::util
1 change: 1 addition & 0 deletions src/igl/vulkan/util/TextureFormatInt.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@
namespace igl::vulkan::util {

TextureFormat intVkTextureFormatToTextureFormat(int32_t vkFormat);

} // namespace igl::vulkan::util

0 comments on commit c9c0023

Please sign in to comment.