Skip to content

Commit

Permalink
src: Add vk_format_utils to UtilityHeaders
Browse files Browse the repository at this point in the history
The library originates from Vulkan-ValidationLayers, but is being moved
into this repo to make it easier for others to use it.

The library has also been modified to be header only and C compatible,
which allows more developers to be able to use it. This does require some
changes, but only affects the FormatElementSize and FormatTexelSize functions
which used default parameters. Two new functions, FormatElementSizeWithAspect
and FormatTexelSizeWithAspect have been added to handle the non-default
image aspect case (the default was COLOR_BIT).
  • Loading branch information
charles-lunarg committed Sep 1, 2023
1 parent dd26ae7 commit 1256e07
Show file tree
Hide file tree
Showing 11 changed files with 3,716 additions and 3 deletions.
2 changes: 2 additions & 0 deletions include/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
target_sources(VulkanUtilityHeaders PRIVATE
vulkan/utility/vul_dispatch_table.h
vulkan/vk_enum_string_helper.h
vulkan/utility/vk_format_utils.h
)
endif()

Expand All @@ -24,3 +25,4 @@ endif()
target_link_Libraries(VulkanUtilityHeaders INTERFACE Vulkan::Headers)

target_include_directories(VulkanUtilityHeaders INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)

2,297 changes: 2,297 additions & 0 deletions include/vulkan/utility/vk_format_utils.h

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions scripts/generate_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def RunGenerators(api: str, registry: str, targetFilter: str) -> None:
from generators.base_generator import BaseGeneratorOptions
from generators.dispatch_table_generator import DispatchTableOutputGenerator
from generators.enum_string_helper_generator import EnumStringHelperOutputGenerator
from generators.format_utils_generator import FormatUtilsOutputGenerator

# Build up a list of all generators and custom options
generators = {
Expand All @@ -35,6 +36,10 @@ def RunGenerators(api: str, registry: str, targetFilter: str) -> None:
'generator' : EnumStringHelperOutputGenerator,
'directory' : 'include/vulkan',
},
'vk_format_utils.h' : {
'generator' : FormatUtilsOutputGenerator,
'directory' : 'include/vulkan/utility',
},
}

if (targetFilter and targetFilter not in generators.keys()):
Expand Down
695 changes: 695 additions & 0 deletions scripts/generators/format_utils_generator.py

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
add_subdirectory(layer)
add_subdirectory(generated)
add_subdirectory(vul_dispatch_table)
add_subdirectory(format_utils)
1 change: 1 addition & 0 deletions tests/add_subdirectory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ target_sources(add_subdirectory_example PRIVATE
client.c
vk_enum_string_helper.c
vul_dispatch_table.c
vk_format_utils.c
)

# NOTE: Because VulkanHeaders is a PUBLIC dependency it needs to be found prior to VulkanUtilityLibraries
Expand Down
8 changes: 8 additions & 0 deletions tests/add_subdirectory/vk_format_utils.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Copyright 2023 The Khronos Group Inc.
// Copyright 2023 Valve Corporation
// Copyright 2023 LunarG, Inc.
//
// SPDX-License-Identifier: Apache-2.0
#include <vulkan/utility/vk_format_utils.h>

void foo() {}
1 change: 1 addition & 0 deletions tests/find_package/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ target_sources(find_package_example PRIVATE
${CMAKE_CURRENT_LIST_DIR}/../add_subdirectory/client.c
${CMAKE_CURRENT_LIST_DIR}/../add_subdirectory/vk_enum_string_helper.c
${CMAKE_CURRENT_LIST_DIR}/../add_subdirectory/vul_dispatch_table.c
${CMAKE_CURRENT_LIST_DIR}/../add_subdirectory/vk_format_utils.c
)

# NOTE: Because VulkanHeaders is a PUBLIC dependency it needs to be found prior to VulkanUtilityLibraries
Expand Down
25 changes: 25 additions & 0 deletions tests/format_utils/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2023 The Khronos Group Inc.
# Copyright 2023 Valve Corporation
# Copyright 2023 LunarG, Inc.
#
# SPDX-License-Identifier: Apache-2.0

find_package(GTest REQUIRED CONFIG)
find_package(magic_enum REQUIRED CONFIG)

include(GoogleTest)

add_executable(test_format_utils test_formats.cpp)

target_link_libraries(test_format_utils PRIVATE
GTest::gtest
GTest::gtest_main
magic_enum::magic_enum
Vulkan::UtilityHeaders
)

if(${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)")
add_compile_options(-Wpedantic -Wall -Wextra -Werror)
endif()

gtest_discover_tests(test_format_utils)
Loading

0 comments on commit 1256e07

Please sign in to comment.