diff --git a/.github/workflows/check-mkvk.yml b/.github/workflows/check-mkvk.yml new file mode 100644 index 0000000000..cc0c1541cf --- /dev/null +++ b/.github/workflows/check-mkvk.yml @@ -0,0 +1,50 @@ +# Copyright 2015-2020 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 +name: KTX-Software Check mkvk CI + +# Seems no way to avoid duplicating this on logic in each .yml file. +# See https://github.com/actions/starter-workflows/issues/245. +on: + # Trigger the workflow on a pull request, + pull_request: + + push: + # And on pushes to main, which will occur when a PR is merged. + branches: + - main + # Also trigger on push of release tags to any branch. Useful + # for testing release builds before merging to main. + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-*' + paths-ignore: + - .appveyor.yml + - .travis.yml + + # Allow manual trigger + workflow_dispatch: + +jobs: + check-mkvk: + strategy: + matrix: + os: [ macos-latest, ubuntu-latest, windows-latest ] + + runs-on: ${{ matrix.os }} + env: + BUILD_DIR: "build" + WERROR: ON + + steps: + - uses: actions/checkout@v4 + + - name: Clone KTX-Specification repo + run: | + pushd ..; git clone https://github.com/KhronosGroup/KTX-Specification.git; popd + - name: Configure CMake build + run: cmake -B ${{ env.BUILD_DIR }} -DKTX_GENERATE_VK_FILES=ON -DKTX_FEATURE_TESTS=OFF -DKTX_FEATURE_TOOLS=OFF -DKTX_WERROR=${{ env.WERROR }} + - name: Test file generation + run: | + cmake --build ${{ env.BUILD_DIR }} --target mkvk --clean-first + git diff --quiet HEAD + diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 599151ac4e..f6917b4cba 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -51,11 +51,6 @@ jobs: sse: ON, opencl: ON} ] include: - - os: windows-latest - generator: 'Visual Studio 17 2022' - toolset: CLangCL - arch: x64 - check_mkvk: ONLY - os: windows-2019 generator: 'Visual Studio 16 2019' toolset: v142 diff --git a/.travis.yml b/.travis.yml index 0c87f7f39d..4ff51beec0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,8 +48,6 @@ env: # FEATURE_PY is off for arm64 macOS because we'd need a cross-compiled version # of Python for it to correctly build the Python extensions (the CI # runs on x86_64) - - CHECK_MKVK=ONLY - - CONFIGURATION=Debug,Release PLATFORM=macOS ARCHS=x86_64 FEATURE_DOC=ON FEATURE_JNI=ON FEATURE_PY=ON FEATURE_LOADTESTS=OpenGL+Vulkan FEATURE_TOOLS=ON FEATURE_TOOLS_CTS=ON LOADTESTS_USE_LOCAL_DEPENDENCIES=ON SUPPORT_SSE=ON SUPPORT_OPENCL=OFF DEPLOY_DOCS=YES PACKAGE=YES @@ -89,10 +87,6 @@ jobs: dist: jammy env: - CHECK_REUSE: ONLY - - os: linux - dist: jammy - env: - - CHECK_MKVK: ONLY - os: linux dist: jammy addons: diff --git a/CMakeLists.txt b/CMakeLists.txt index 77f2055571..1ee70c6186 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -385,7 +385,11 @@ set(KTX_MAIN_SRC lib/texture2.c lib/texture2.h lib/uthash.h + lib/vk2gl.h lib/vk_format.h + lib/vkFormat2glFormat.inl + lib/vkFormat2glInternalFormat.inl + lib/vkFormat2glType.inl lib/vkformat_check.c lib/vkformat_enum.h lib/vkformat_str.c diff --git a/lib/mkvkformatfiles b/ci_scripts/mkvkformatfiles similarity index 71% rename from lib/mkvkformatfiles rename to ci_scripts/mkvkformatfiles index 5ab5ac8a54..f9d0e01eb1 100755 --- a/lib/mkvkformatfiles +++ b/ci_scripts/mkvkformatfiles @@ -1,25 +1,74 @@ -#! /usr/bin/awk -f +#! /usr/bin/env -S awk -f # Copyright 2019-2024 Mark Callow # SPDX-License-Identifier: Apache-2.0 +# Usage: mkvkformatfiles [output-dir path/to/vulkan_core] +# +# output_dir defaults to the current directory. +# path/to/vulkan_core defaults to ENVIRON["Vulkan_INCLUDE_DIR"]. If not +# set, default is lib/dfdutils/vulkan/vulkan_core.h. +# +# When specifying path/to/vulkan_core, output-dir must also be +# specified. + # This script creates 5 files from vulkan/vulkan_core.h: # -# - vkformat_enum.h, the VkFormat enum declaration for those who don't -# want to include vulkan_core.h. -# - vkformat_list.inl, a list of VkFormat enum names for use in -# initializing tables, etc. -# - vkformat_str.c, a switch statement for converting VkFormat enums to +# - lib/vkformat_enum.h: the VkFormat enum declaration for those who don't +# want to include vulkan_core.h. extension token names for +# extensions that have been moved to core are omitted. +# +# - lib/vkformat_str.c: a switch statement for converting VkFormat enums to # to strings corresponding to the format names. -# - vkformat_typesize.c, function to return the type-size for each +# - lib/vkformat_typesize.c, function to return the type-size for each # format. -# - vkformat_check.c, 2 functions: 1 to checking if a format is prohibited in -# KTX2 and the other to see if a format is valid. -# KTX2. +# +# - lib/vkformat_check.c: 2 functions: 1 to check if a format is prohibited in +# KTX2 and the other to see if a format is a valid Vulkan format. +# +# - interface/python_binding/pyktx/vk_format.py, VkFormat enumerators for +# Python. +# +# - interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java, +# VkFormat enumerators for Java. +# +# - tests/unittests/vkformat_list.inl, a list of VkFormat enum names for use in +# initializing tables, etc. +# +# KTX v2 prohibited formats are excluded from the last three files. BEGIN { if (index(tolower(ENVIRON["OS"]), "windows") > 0) { ORS = "\r\n"; } + # ARGV[0] is "awk". + if (ARGC > 1) { + output_dir = ARGV[1] "/"; + delete ARGV[1]; + } else { + output_dir = "./"; + } + # awk reads files whose names are found in the positional parameters, + # hence setting ARGV[1] here and deleting a possible ARGV[1] above. + if (ARGC == 1) { + if (ENVIRON["Vulkan_INCLUDE_DIR"]) { + ARGV[1] = ENVIRON["Vulkan_INCLUDE_DIR"] "/vulkan/vulkan_core.h"; ARGC = 2 + } else { + # Use local vulkan_core.h until ASTC 3D texture extension is released. + # ARGV[1] = "/usr/include"; + ARGV[1] = "lib/dfdutils/vulkan/vulkan_core.h"; ARGC = 2 + } + } + + # Hard-coded paths are somewhat unfortunate but major changes in + # the source code organization are unlikely. + format_hdr = output_dir "lib/vkformat_enum.h" + format_typesize = output_dir "lib/vkformat_typesize.c" + format_inl = output_dir "tests/unittests/vkformat_list.inl" + format_strings = output_dir "lib/vkformat_str.c" + format_check = output_dir "lib/vkformat_check.c" + format_java = output_dir "interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java" + format_python = output_dir "interface/python_binding/pyktx/vk_format.py" + vulkan_core = "vulkan_core.h" processing_core_formats = 0 processing_extension_formats = 0 @@ -33,33 +82,21 @@ BEGIN { extension_formats = "" end_range = "" max_std_format_enum = 0 + java = "package org.khronos.ktx;" ORS "public class VkFormat {" ORS prohibited = "#include " ORS "#include " ORS ORS prohibited = prohibited "#include \"vkformat_enum.h\"" ORS ORS prohibited = prohibited "bool" ORS "isProhibitedFormat(VkFormat format)" ORS "{" ORS prohibited = prohibited " switch (format) {" ORS; + python = "from enum import IntEnum" ORS ORS "class VkFormat(IntEnum):" ORS + python = python " \"\"\"Vulkan texture format constants.\"\"\"" ORS ORS valid = "bool" ORS "isValidFormat(VkFormat format)" ORS "{" ORS valid = valid " // On MSVC VkFormat can be a signed integer" ORS valid = valid " if ((uint32_t) format <= VK_FORMAT_MAX_STANDARD_ENUM)" ORS valid = valid " return true;" ORS " else switch(format) {" ORS - if (ARGC == 2) { - output_dir = ARGV[1] "/"; - } - format_hdr = output_dir "vkformat_enum.h" - format_typesize = output_dir "vkformat_typesize.c" - format_inl = output_dir "vkformat_list.inl" - format_strings = output_dir "vkformat_str.c" - format_check = output_dir "vkformat_check.c" - if (ENVIRON["Vulkan_INCLUDE_DIR"]) { - ARGV[1] = ENVIRON["Vulkan_INCLUDE_DIR"] "/vulkan/vulkan_core.h"; ARGC = 2 - } else { -# Use local vulkan_core.h until ASTC 3D texture extension is released. -# ARGV[1] = "/usr/include"; - ARGV[1] = "lib/dfdutils/vulkan/vulkan_core.h"; ARGC = 2 - } } # A range pattern to extract the copyright message. -/\*\* Copyright*/,/\*\// { copyright = copyright $0 ORS } +/\*\* Copyright*/,/\*\// { copyright = copyright $0 ORS; } $2 == "VK_HEADER_VERSION" { banner = ORS @@ -89,8 +126,12 @@ $2 == "VK_HEADER_VERSION" { if (enum_val+0 > max_std_format_enum) { max_std_format_enum = enum_val+0; } - if ($1 !~ /UNDEFINED/) { - format_name_list = format_name_list $1 "," ORS + if ($1 !~ /SCALED/) { + if ($1 !~ /UNDEFINED/) { + format_name_list = format_name_list $1 "," ORS + } + java = java " public static final int " $1 " = " enum_val ";" ORS + python = python " " $1 " = " enum_val ORS } } } @@ -99,7 +140,7 @@ $2 == "VK_HEADER_VERSION" { } } -/.*SCALED|A8B8G8R8_.*_PACK32/ { prohibited = prohibited " case " $1 ":" ORS; } +/.*SCALED/ { prohibited = prohibited " case " $1 ":" ORS; } #/A8B8G8R8_.*_PACK32/ { prohibited = prohibited " case " $1 ":" ORS; } # Multiplane formats. /VK_FORMAT_[^F]/ && (/PLANE/ || /420/) { @@ -113,6 +154,10 @@ $2 == "VK_HEADER_VERSION" { /VK_FORMAT_[^F].* = 1000/ && ! /PLANE/ && !/420/ { valid = valid " case " $1 ":" ORS; format_name_list = format_name_list $1 "," ORS + enum_val = $3; + sub(/,$/, "", enum_val); + java = java " public static final int " $1 " = " enum_val ";" ORS + python = python " " $1 " = " enum_val ORS } function removePrefix(string, prefix) { @@ -177,9 +222,31 @@ function write_source_file(body, filename) { print body > filename } +function write_python_source_file(body, filename) { + pybanner = banner; + sub(/\/\*/, "#***", pybanner); + sub(/\*\//, "****", pybanner); + sub(/ Auto/, "# Auto", pybanner); + regexp = ORS " \\*"; + sub(regexp, ORS "#", pybanner); + + pycopyright = copyright; + regexp = "/\\*" ORS; + sub(regexp, "", pycopyright); + gsub(/\*\*/, "#", pycopyright); + regexp = "\\*/" ORS; + sub(regexp, "", pycopyright); + + print pybanner > filename + print pycopyright > filename + print body > filename +} + END { # vkformat_enum.h write_header_file("_VKFORMAT_ENUM_H_", "VULKAN_CORE_H_", format_decl ORS end_range, format_hdr); + + # vkformat_list.inl write_source_file(format_name_list ORS, format_inl) # vkformat_typesize.c @@ -255,6 +322,13 @@ END { end_str2vk = " return VK_FORMAT_UNDEFINED;" ORS; end_str2vk = end_str2vk "}" write_source_file(prelude switch_body_vk2str postscript begin_str2vk switch_body_str2vk end_str2vk, format_strings); + + # VkFormat.java + end_java = "}" ORS + write_source_file(java end_java, format_java); + + # vk_format.py + write_python_source_file(python, format_python); } # vim:ai:ts=4:sts=4:sw=2:expandtab:textwidth=70 diff --git a/cmake/mkvk.cmake b/cmake/mkvk.cmake index 5533f74f76..c70338e532 100644 --- a/cmake/mkvk.cmake +++ b/cmake/mkvk.cmake @@ -22,9 +22,9 @@ if (NOT IOS AND NOT ANDROID) # # I haven't investigated why. # find_package(Vulkan REQUIRED) -# This file is included from its parent so has the same scope as the -# including file. If we change Vulkan_INCLUDE_DIR, other users will -# be affected. + # This cmake file is included from its parent so has the same scope as + # the including file. If we change Vulkan_INCLUDE_DIR, other parts will + # be affected. set(mkvk_vulkan_include_dir lib/dfdutils) else() # Skip mkvk. There is no need to use iOS or Android to regenerate @@ -55,13 +55,15 @@ find_package(Perl REQUIRED) list(APPEND mkvkformatfiles_input ${vulkan_header} - lib/mkvkformatfiles) + ci_scripts/mkvkformatfiles) list(APPEND mkvkformatfiles_output + "${PROJECT_SOURCE_DIR}/interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java" + "${PROJECT_SOURCE_DIR}/interface/python_binding/pyktx/vk_format.py" "${PROJECT_SOURCE_DIR}/lib/vkformat_enum.h" "${PROJECT_SOURCE_DIR}/lib/vkformat_typesize.c" "${PROJECT_SOURCE_DIR}/lib/vkformat_check.c" - "${PROJECT_SOURCE_DIR}/lib/vkformat_list.c" - "${PROJECT_SOURCE_DIR}/lib/vkformat_str.c") + "${PROJECT_SOURCE_DIR}/lib/vkformat_str.c" + "${PROJECT_SOURCE_DIR}tests/unittests/vkformat_list.inl") # CAUTION: When a COMMAND contains VAR="Value" CMake messes up the escaping # for Bash. With or without VERBATIM, if Value has no spaces CMake changes it @@ -78,12 +80,11 @@ list(APPEND mkvkformatfiles_output # parses successfully. list(APPEND mvffc_as_list - Vulkan_INCLUDE_DIR="${mkvk_vulkan_include_dir}" lib/mkvkformatfiles lib) - list(JOIN mvffc_as_list " " mvffc_as_string) + ci_scripts/mkvkformatfiles ./ ${vulkan_header}) +list(JOIN mvffc_as_list " " mvffc_as_string) set(mkvkformatfiles_command "${BASH_EXECUTABLE}" -c "${mvffc_as_string}") add_custom_command(OUTPUT ${mkvkformatfiles_output} - COMMAND ${CMAKE_COMMAND} -E make_directory lib COMMAND ${mkvkformatfiles_command} DEPENDS ${mkvkformatfiles_input} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} @@ -104,7 +105,6 @@ set(makevk2dfd_output add_custom_command( OUTPUT ${makevk2dfd_output} - COMMAND ${CMAKE_COMMAND} -E make_directory lib/dfdutils COMMAND "${PERL_EXECUTABLE}" lib/dfdutils/makevk2dfd.pl ${vulkan_header} lib/dfdutils/vk2dfd.inl DEPENDS ${makevk2dfd_input} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} @@ -139,10 +139,51 @@ add_custom_target(makedfd2vk SOURCES ${makedfd2vk_input} ) +find_program(RUBY_EXECUTABLE + NAMES ruby ruby3.1 ruby31 ruby3.0 ruby30 + # N.B. Must use HINTS. PATHS are searched after default paths. + HINTS $ENV{MY_RUBY_HOME}/bin + REQUIRED) +find_path(KTX_SPECIFICATION + NAME formats.json + PATHS ${PROJECT_SOURCE_DIR}/../KTX-Specification + NO_DEFAULT_PATH + REQUIRED) + +list(APPEND makevk2gl_input + ${KTX_SPECIFICATION}/generate_format_switches.rb + ${KTX_SPECIFICATION}/formats.json) +list(APPEND makevk2gl_output + "${PROJECT_SOURCE_DIR}/lib/vkFormat2glFormat.inl" + "${PROJECT_SOURCE_DIR}/lib/vkFormat2glInternalFormat.inl" + "${PROJECT_SOURCE_DIR}/lib/vkFormat2glType.inl") +# Until we have D3D or Metal loaders these outputs of +# generate_format_switches.rb are unneeded. +list(APPEND makevk2gl_extraneous_files + "${PROJECT_SOURCE_DIR}/lib/vkFormat2dxgiFormat.inl" + "${PROJECT_SOURCE_DIR}/lib/vkFormat2mtlFormat.inl" +) + +add_custom_command( + OUTPUT ${makevk2gl_output} + COMMAND "${RUBY_EXECUTABLE}" ${KTX_SPECIFICATION}/generate_format_switches.rb ${PROJECT_SOURCE_DIR}/lib + COMMAND ${CMAKE_COMMAND} -E rm -f ${makevk2gl_extraneous_files} + DEPENDS ${makevk2gl_input} + WORKING_DIRECTORY ${KTX_SPECIFICATION} + COMMENT "Generating VkFormat to OpenGL internal format, format and type switches" + VERBATIM +) + +add_custom_target(makevk2gl + DEPENDS ${makevk2gl_output} + SOURCES ${makedvk2gl_input} +) + add_custom_target(mkvk SOURCES ${CMAKE_CURRENT_LIST_FILE}) add_dependencies(mkvk mkvkformatfiles makevk2dfd makedfd2vk + makevk2gl ) diff --git a/interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java b/interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java index e9142b9e8d..aecdfe630c 100644 --- a/interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java +++ b/interface/java_binding/src/main/java/org/khronos/ktx/VkFormat.java @@ -1,13 +1,15 @@ + +/***************************** Do not edit. ***************************** + Automatically generated from vulkan_core.h version 267 by mkvkformatfiles. + *************************************************************************/ + /* - * Copyright (c) 2021, Shukant Pal and Contributors - * SPDX-License-Identifier: Apache-2.0 - */ +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ package org.khronos.ktx; - -/** - * See https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormat.html - */ public class VkFormat { public static final int VK_FORMAT_UNDEFINED = 0; public static final int VK_FORMAT_R4G4_UNORM_PACK8 = 1; @@ -48,6 +50,11 @@ public class VkFormat { public static final int VK_FORMAT_B8G8R8A8_UINT = 48; public static final int VK_FORMAT_B8G8R8A8_SINT = 49; public static final int VK_FORMAT_B8G8R8A8_SRGB = 50; + public static final int VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51; + public static final int VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52; + public static final int VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55; + public static final int VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56; + public static final int VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57; public static final int VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58; public static final int VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59; public static final int VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62; @@ -163,6 +170,8 @@ public class VkFormat { public static final int VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182; public static final int VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183; public static final int VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184; + public static final int VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000; + public static final int VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001; public static final int VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007; public static final int VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008; public static final int VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009; @@ -173,14 +182,10 @@ public class VkFormat { public static final int VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019; public static final int VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020; public static final int VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021; - public static final int VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000; - public static final int VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001; - public static final int VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002; - public static final int VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003; - public static final int VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004; - public static final int VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005; - public static final int VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006; - public static final int VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007; + public static final int VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027; + public static final int VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028; + public static final int VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000; + public static final int VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001; public static final int VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000; public static final int VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001; public static final int VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002; @@ -195,22 +200,46 @@ public class VkFormat { public static final int VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011; public static final int VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012; public static final int VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013; - public static final int VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000; - public static final int VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001; - public static final int VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000; - public static final int VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001; - public static final int VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002; - public static final int VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003; - public static final int VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004; - public static final int VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005; - public static final int VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006; - public static final int VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007; - public static final int VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008; - public static final int VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009; - public static final int VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010; - public static final int VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011; - public static final int VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012; - public static final int VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013; - public static final int VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000; - public static final int VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001; + public static final int VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000; + public static final int VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001; + public static final int VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002; + public static final int VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003; + public static final int VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004; + public static final int VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005; + public static final int VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006; + public static final int VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007; + public static final int VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT = 1000288000; + public static final int VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT = 1000288001; + public static final int VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT = 1000288002; + public static final int VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT = 1000288003; + public static final int VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT = 1000288004; + public static final int VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT = 1000288005; + public static final int VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT = 1000288006; + public static final int VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT = 1000288007; + public static final int VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT = 1000288008; + public static final int VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT = 1000288009; + public static final int VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT = 1000288010; + public static final int VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT = 1000288011; + public static final int VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT = 1000288012; + public static final int VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT = 1000288013; + public static final int VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT = 1000288014; + public static final int VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT = 1000288015; + public static final int VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT = 1000288016; + public static final int VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT = 1000288017; + public static final int VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT = 1000288018; + public static final int VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT = 1000288019; + public static final int VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT = 1000288020; + public static final int VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT = 1000288021; + public static final int VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT = 1000288022; + public static final int VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT = 1000288023; + public static final int VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT = 1000288024; + public static final int VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT = 1000288025; + public static final int VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT = 1000288026; + public static final int VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT = 1000288027; + public static final int VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT = 1000288028; + public static final int VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT = 1000288029; + public static final int VK_FORMAT_R16G16_S10_5_NV = 1000464000; + public static final int VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000; + public static final int VK_FORMAT_A8_UNORM_KHR = 1000470001; } + diff --git a/interface/python_binding/pyktx/vk_format.py b/interface/python_binding/pyktx/vk_format.py index da724d96cd..269e334227 100644 --- a/interface/python_binding/pyktx/vk_format.py +++ b/interface/python_binding/pyktx/vk_format.py @@ -1,9 +1,14 @@ -# Copyright (c) 2023, Shukant Pal and Contributors + +#******************************* Do not edit. ***************************** +# Automatically generated from vulkan_core.h version 267 by mkvkformatfiles. +#*************************************************************************** + +# Copyright 2015-2023 The Khronos Group Inc. +# # SPDX-License-Identifier: Apache-2.0 from enum import IntEnum - class VkFormat(IntEnum): """Vulkan texture format constants.""" @@ -46,6 +51,11 @@ class VkFormat(IntEnum): VK_FORMAT_B8G8R8A8_UINT = 48 VK_FORMAT_B8G8R8A8_SINT = 49 VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 @@ -161,6 +171,8 @@ class VkFormat(IntEnum): VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 @@ -171,14 +183,10 @@ class VkFormat(IntEnum): VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 - VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 - VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 - VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 - VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 - VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 - VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 - VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 - VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001 VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000 VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001 VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002 @@ -193,5 +201,45 @@ class VkFormat(IntEnum): VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011 VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012 VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013 - VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000 - VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT = 1000288000 + VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT = 1000288001 + VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT = 1000288002 + VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT = 1000288003 + VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT = 1000288004 + VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT = 1000288005 + VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT = 1000288006 + VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT = 1000288007 + VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT = 1000288008 + VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT = 1000288009 + VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT = 1000288010 + VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT = 1000288011 + VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT = 1000288012 + VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT = 1000288013 + VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT = 1000288014 + VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT = 1000288015 + VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT = 1000288016 + VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT = 1000288017 + VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT = 1000288018 + VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT = 1000288019 + VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT = 1000288020 + VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT = 1000288021 + VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT = 1000288022 + VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT = 1000288023 + VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT = 1000288024 + VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT = 1000288025 + VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT = 1000288026 + VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT = 1000288027 + VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT = 1000288028 + VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT = 1000288029 + VK_FORMAT_R16G16_S10_5_NV = 1000464000 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000 + VK_FORMAT_A8_UNORM_KHR = 1000470001 + diff --git a/lib/astc_encode.cpp b/lib/astc_encode.cpp index 657b518d12..3cece4b293 100644 --- a/lib/astc_encode.cpp +++ b/lib/astc_encode.cpp @@ -16,6 +16,7 @@ * @author Wasim Abbas , www.arm.com */ +#include #include #include #include @@ -30,7 +31,6 @@ #include "ktxint.h" #include "texture2.h" #include "vkformat_enum.h" -#include "vk_format.h" #include "astc-encoder/Source/astcenc.h" diff --git a/lib/dfdutils/createdfd.c b/lib/dfdutils/createdfd.c index 55b045b7d3..d06a81429a 100644 --- a/lib/dfdutils/createdfd.c +++ b/lib/dfdutils/createdfd.c @@ -109,7 +109,6 @@ static void writeSample(uint32_t *DFD, int sampleNo, int channel, float f; } lower, upper; uint32_t *sample = DFD + 1 + KHR_DF_WORD_SAMPLESTART + sampleNo * KHR_DF_WORD_SAMPLEWORDS; - if (channel == 3) channel = KHR_DF_CHANNEL_RGBSDA_ALPHA; if (channel == 3) channel = KHR_DF_CHANNEL_RGBSDA_ALPHA; channel = setChannelFlags(channel, suffix); diff --git a/lib/gl_format.h b/lib/gl_format.h index 3986bc430c..44abd2c6d4 100644 --- a/lib/gl_format.h +++ b/lib/gl_format.h @@ -1,4 +1,4 @@ -/* +/* ================================================================================================ Description : OpenGL formats/types and properties. @@ -70,7 +70,6 @@ static inline GLenum glGetFormatFromInternalFormat( const GLenum internalFormat static inline GLenum glGetTypeFromInternalFormat( const GLenum internalFormat ); static inline void glGetFormatSize( const GLenum internalFormat, GlFormatSize * pFormatSize ); static inline unsigned int glGetTypeSizeFromType( const GLenum type ); -static inline GLenum glGetInternalFormatFromVkFormat ( VkFormat format ); MODIFICATIONS for use in libktx =============================== @@ -79,7 +78,6 @@ MODIFICATIONS for use in libktx 2019.3.09 #if 0 around GL type declarations. 〃 2019.5.30 Use common ktxFormatSize to return results. 〃 2019.5.30 Return blockSizeInBits 0 for default case of glGetFormatSize. 〃 -2019.5.30 Added glGetInternalFormatFromVkFormat. 〃 ================================================================================================ */ @@ -101,6 +99,7 @@ MODIFICATIONS for use in libktx #endif // __cplusplus #endif + /* =========================================================================== Avoid warnings or even errors when using strict C99. "Redefinition of @@ -2436,219 +2435,4 @@ static inline void glGetFormatSize( const GLenum internalFormat, ktxFormatSize * } } -static inline GLint glGetInternalFormatFromVkFormat( VkFormat vkFormat ) -{ - switch ( vkFormat ) - { - // - // 8 bits per component - // - case VK_FORMAT_R8_UNORM: return GL_R8; // 1-component, 8-bit unsigned normalized - case VK_FORMAT_R8G8_UNORM: return GL_RG8; // 2-component, 8-bit unsigned normalized - case VK_FORMAT_R8G8B8_UNORM: return GL_RGB8; // 3-component, 8-bit unsigned normalized - case VK_FORMAT_R8G8B8A8_UNORM: return GL_RGBA8; // 4-component, 8-bit unsigned normalized - - case VK_FORMAT_R8_SNORM: return GL_R8_SNORM; // 1-component, 8-bit signed normalized - case VK_FORMAT_R8G8_SNORM: return GL_RG8_SNORM; // 2-component, 8-bit signed normalized - case VK_FORMAT_R8G8B8_SNORM: return GL_RGB8_SNORM; // 3-component, 8-bit signed normalized - case VK_FORMAT_R8G8B8A8_SNORM: return GL_RGBA8_SNORM; // 4-component, 8-bit signed normalized - - case VK_FORMAT_R8_UINT: return GL_R8UI; // 1-component, 8-bit unsigned integer - case VK_FORMAT_R8G8_UINT: return GL_RG8UI; // 2-component, 8-bit unsigned integer - case VK_FORMAT_R8G8B8_UINT: return GL_RGB8UI; // 3-component, 8-bit unsigned integer - case VK_FORMAT_R8G8B8A8_UINT: return GL_RGBA8UI; // 4-component, 8-bit unsigned integer - - case VK_FORMAT_R8_SINT: return GL_R8I; // 1-component, 8-bit signed integer - case VK_FORMAT_R8G8_SINT: return GL_RG8I; // 2-component, 8-bit signed integer - case VK_FORMAT_R8G8B8_SINT: return GL_RGB8I; // 3-component, 8-bit signed integer - case VK_FORMAT_R8G8B8A8_SINT: return GL_RGBA8I; // 4-component, 8-bit signed integer - - case VK_FORMAT_R8_SRGB: return GL_SR8; // 1-component, 8-bit sRGB - case VK_FORMAT_R8G8_SRGB: return GL_SRG8; // 2-component, 8-bit sRGB - case VK_FORMAT_R8G8B8_SRGB: return GL_SRGB8; // 3-component, 8-bit sRGB - case VK_FORMAT_R8G8B8A8_SRGB: return GL_SRGB8_ALPHA8; // 4-component, 8-bit sRGB - - // - // 16 bits per component - // - case VK_FORMAT_R16_UNORM: return GL_R16; // 1-component, 16-bit unsigned normalized - case VK_FORMAT_R16G16_UNORM: return GL_RG16; // 2-component, 16-bit unsigned normalized - case VK_FORMAT_R16G16B16_UNORM: return GL_RGB16; // 3-component, 16-bit unsigned normalized - case VK_FORMAT_R16G16B16A16_UNORM: return GL_RGBA16; // 4-component, 16-bit unsigned normalized - - case VK_FORMAT_R16_SNORM: return GL_R16_SNORM; // 1-component, 16-bit signed normalized - case VK_FORMAT_R16G16_SNORM: return GL_RG16_SNORM; // 2-component, 16-bit signed normalized - case VK_FORMAT_R16G16B16_SNORM: return GL_RGB16_SNORM; // 3-component, 16-bit signed normalized - case VK_FORMAT_R16G16B16A16_SNORM: return GL_RGBA16_SNORM; // 4-component, 16-bit signed normalized - - case VK_FORMAT_R16_UINT: return GL_R16UI; // 1-component, 16-bit unsigned integer - case VK_FORMAT_R16G16_UINT: return GL_RG16UI; // 2-component, 16-bit unsigned integer - case VK_FORMAT_R16G16B16_UINT: return GL_RGB16UI; // 3-component, 16-bit unsigned integer - case VK_FORMAT_R16G16B16A16_UINT: return GL_RGBA16UI; // 4-component, 16-bit unsigned integer - - case VK_FORMAT_R16_SINT: return GL_R16I; // 1-component, 16-bit signed integer - case VK_FORMAT_R16G16_SINT: return GL_RG16I; // 2-component, 16-bit signed integer - case VK_FORMAT_R16G16B16_SINT: return GL_RGB16I; // 3-component, 16-bit signed integer - case VK_FORMAT_R16G16B16A16_SINT: return GL_RGBA16I; // 4-component, 16-bit signed integer - - case VK_FORMAT_R16_SFLOAT: return GL_R16F; // 1-component, 16-bit floating-point - case VK_FORMAT_R16G16_SFLOAT: return GL_RG16F; // 2-component, 16-bit floating-point - case VK_FORMAT_R16G16B16_SFLOAT: return GL_RGB16F; // 3-component, 16-bit floating-point - case VK_FORMAT_R16G16B16A16_SFLOAT: return GL_RGBA16F; // 4-component, 16-bit floating-point - - // - // 32 bits per component - // - case VK_FORMAT_R32_UINT: return GL_R32UI; // 1-component, 32-bit unsigned integer - case VK_FORMAT_R32G32_UINT: return GL_RG32UI; // 2-component, 32-bit unsigned integer - case VK_FORMAT_R32G32B32_UINT: return GL_RGB32UI; // 3-component, 32-bit unsigned integer - case VK_FORMAT_R32G32B32A32_UINT: return GL_RGBA32UI; // 4-component, 32-bit unsigned integer - - case VK_FORMAT_R32_SINT: return GL_R32I; // 1-component, 32-bit signed integer - case VK_FORMAT_R32G32_SINT: return GL_RG32I; // 2-component, 32-bit signed integer - case VK_FORMAT_R32G32B32_SINT: return GL_RGB32I; // 3-component, 32-bit signed integer - case VK_FORMAT_R32G32B32A32_SINT: return GL_RGBA32I; // 4-component, 32-bit signed integer - - case VK_FORMAT_R32_SFLOAT: return GL_R32F; // 1-component, 32-bit floating-point - case VK_FORMAT_R32G32_SFLOAT: return GL_RG32F; // 2-component, 32-bit floating-point - case VK_FORMAT_R32G32B32_SFLOAT: return GL_RGB32F; // 3-component, 32-bit floating-point - case VK_FORMAT_R32G32B32A32_SFLOAT: return GL_RGBA32F; // 4-component, 32-bit floating-point - - // - // Packed - // - case VK_FORMAT_R5G5B5A1_UNORM_PACK16: return GL_RGB5; // 3-component 5:5:5, unsigned normalized - case VK_FORMAT_R5G6B5_UNORM_PACK16: return GL_RGB565; // 3-component 5:6:5, unsigned normalized - case VK_FORMAT_R4G4B4A4_UNORM_PACK16: return GL_RGBA4; // 4-component 4:4:4:4, unsigned normalized - case VK_FORMAT_A1R5G5B5_UNORM_PACK16: return GL_RGB5_A1; // 4-component 5:5:5:1, unsigned normalized - case VK_FORMAT_A2R10G10B10_UNORM_PACK32: return GL_RGB10_A2; // 4-component 10:10:10:2, unsigned normalized - case VK_FORMAT_A2R10G10B10_UINT_PACK32: return GL_RGB10_A2UI; // 4-component 10:10:10:2, unsigned integer - case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return GL_R11F_G11F_B10F; // 3-component 11:11:10, floating-point - case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return GL_RGB9_E5; // 3-component/exp 9:9:9/5, floating-point - - // - // S3TC/DXT/BC - // - - case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; // line through 3D space, 4x4 blocks, unsigned normalized - case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; // line through 3D space plus 1-bit alpha, 4x4 blocks, unsigned normalized - case VK_FORMAT_BC2_UNORM_BLOCK: return GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; // line through 3D space plus line through 1D space, 4x4 blocks, unsigned normalized - case VK_FORMAT_BC3_UNORM_BLOCK: return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; // line through 3D space plus 4-bit alpha, 4x4 blocks, unsigned normalized - - case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; // line through 3D space, 4x4 blocks, sRGB - case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; // line through 3D space plus 1-bit alpha, 4x4 blocks, sRGB - case VK_FORMAT_BC2_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; // line through 3D space plus line through 1D space, 4x4 blocks, sRGB - case VK_FORMAT_BC3_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; // line through 3D space plus 4-bit alpha, 4x4 blocks, sRGB - - case VK_FORMAT_BC4_UNORM_BLOCK: return GL_COMPRESSED_RED_RGTC1; // line through 1D space, 4x4 blocks, unsigned normalized - case VK_FORMAT_BC5_UNORM_BLOCK: return GL_COMPRESSED_RG_RGTC2; // two lines through 1D space, 4x4 blocks, unsigned normalized - case VK_FORMAT_BC4_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_RED_RGTC1; // line through 1D space, 4x4 blocks, signed normalized - case VK_FORMAT_BC5_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_RG_RGTC2; // two lines through 1D space, 4x4 blocks, signed normalized - - case VK_FORMAT_BC6H_UFLOAT_BLOCK: return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT; // 3-component, 4x4 blocks, unsigned floating-point - case VK_FORMAT_BC6H_SFLOAT_BLOCK: return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT; // 3-component, 4x4 blocks, signed floating-point - case VK_FORMAT_BC7_UNORM_BLOCK: return GL_COMPRESSED_RGBA_BPTC_UNORM; // 4-component, 4x4 blocks, unsigned normalized - case VK_FORMAT_BC7_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM; // 4-component, 4x4 blocks, sRGB - - // - // ETC - // - case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return GL_COMPRESSED_RGB8_ETC2; // 3-component ETC2, 4x4 blocks, unsigned normalized - case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; // 4-component ETC2 with 1-bit alpha, 4x4 blocks, unsigned normalized - case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return GL_COMPRESSED_RGBA8_ETC2_EAC; // 4-component ETC2, 4x4 blocks, unsigned normalized - - case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ETC2; // 3-component ETC2, 4x4 blocks, sRGB - case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; // 4-component ETC2 with 1-bit alpha, 4x4 blocks, sRGB - case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; // 4-component ETC2, 4x4 blocks, sRGB - - case VK_FORMAT_EAC_R11_UNORM_BLOCK: return GL_COMPRESSED_R11_EAC; // 1-component ETC, 4x4 blocks, unsigned normalized - case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return GL_COMPRESSED_RG11_EAC; // 2-component ETC, 4x4 blocks, unsigned normalized - case VK_FORMAT_EAC_R11_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_R11_EAC; // 1-component ETC, 4x4 blocks, signed normalized - case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_RG11_EAC; // 2-component ETC, 4x4 blocks, signed normalized - - // - // PVRTC - // - case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; // 3- or 4-component PVRTC, 16x8 blocks, unsigned normalized - case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; // 3- or 4-component PVRTC, 8x8 blocks, unsigned normalized - case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG; // 3- or 4-component PVRTC, 16x8 blocks, unsigned normalized - case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG; // 3- or 4-component PVRTC, 4x4 blocks, unsigned normalized - - case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT; // 4-component PVRTC, 16x8 blocks, sRGB - case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT; // 4-component PVRTC, 8x8 blocks, sRGB - case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG; // 4-component PVRTC, 8x4 blocks, sRGB - case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG; // 4-component PVRTC, 4x4 blocks, sRGB - - // - // ASTC - // - case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_4x4_KHR; // 4-component ASTC, 4x4 blocks, unsigned normalized - case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_5x4_KHR; // 4-component ASTC, 5x4 blocks, unsigned normalized - case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_5x5_KHR; // 4-component ASTC, 5x5 blocks, unsigned normalized - case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_6x5_KHR; // 4-component ASTC, 6x5 blocks, unsigned normalized - case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_6x6_KHR; // 4-component ASTC, 6x6 blocks, unsigned normalized - case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x5_KHR; // 4-component ASTC, 8x5 blocks, unsigned normalized - case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x6_KHR; // 4-component ASTC, 8x6 blocks, unsigned normalized - case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x8_KHR; // 4-component ASTC, 8x8 blocks, unsigned normalized - case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x5_KHR; // 4-component ASTC, 10x5 blocks, unsigned normalized - case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x6_KHR; // 4-component ASTC, 10x6 blocks, unsigned normalized - case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x8_KHR; // 4-component ASTC, 10x8 blocks, unsigned normalized - case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x10_KHR; // 4-component ASTC, 10x10 blocks, unsigned normalized - case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_12x10_KHR; // 4-component ASTC, 12x10 blocks, unsigned normalized - case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_12x12_KHR; // 4-component ASTC, 12x12 blocks, unsigned normalized - - case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; // 4-component ASTC, 4x4 blocks, sRGB - case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; // 4-component ASTC, 5x4 blocks, sRGB - case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; // 4-component ASTC, 5x5 blocks, sRGB - case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; // 4-component ASTC, 6x5 blocks, sRGB - case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; // 4-component ASTC, 6x6 blocks, sRGB - case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; // 4-component ASTC, 8x5 blocks, sRGB - case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; // 4-component ASTC, 8x6 blocks, sRGB - case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; // 4-component ASTC, 8x8 blocks, sRGB - case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; // 4-component ASTC, 10x5 blocks, sRGB - case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; // 4-component ASTC, 10x6 blocks, sRGB - case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; // 4-component ASTC, 10x8 blocks, sRGB - case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; // 4-component ASTC, 10x10 blocks, sRGB - case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; // 4-component ASTC, 12x10 blocks, sRGB - case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; // 4-component ASTC, 12x12 blocks, sRGB - - // XXX FIXME Update once Vulkan ASTC HDR & 3D extensions are released. -#if 0 - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_3x3x3_OES; // 4-component ASTC, 3x3x3 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_4x3x3_OES; // 4-component ASTC, 4x3x3 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_4x4x3_OES; // 4-component ASTC, 4x4x3 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_4x4x4_OES; // 4-component ASTC, 4x4x4 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_5x4x4_OES; // 4-component ASTC, 5x4x4 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_5x5x4_OES; // 4-component ASTC, 5x5x4 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_5x5x5_OES; // 4-component ASTC, 5x5x5 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_6x5x5_OES; // 4-component ASTC, 6x5x5 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_6x6x5_OES; // 4-component ASTC, 6x6x5 blocks, unsigned normalized - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_RGBA_ASTC_6x6x6_OES; // 4-component ASTC, 6x6x6 blocks, unsigned normalized - - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES; // 4-component ASTC, 3x3x3 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES; // 4-component ASTC, 4x3x3 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES; // 4-component ASTC, 4x4x3 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES; // 4-component ASTC, 4x4x4 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES; // 4-component ASTC, 5x4x4 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES; // 4-component ASTC, 5x5x4 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES; // 4-component ASTC, 5x5x5 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES; // 4-component ASTC, 6x5x5 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES; // 4-component ASTC, 6x6x5 blocks, sRGB - case VK_FORMAT_UNDEFINED: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES; // 4-component ASTC, 6x6x6 blocks, sRGB -#endif - - // - // Depth/stencil - // - case VK_FORMAT_D16_UNORM: return GL_DEPTH_COMPONENT16; - case VK_FORMAT_X8_D24_UNORM_PACK32: return GL_DEPTH_COMPONENT24; - case VK_FORMAT_D32_SFLOAT: return GL_DEPTH_COMPONENT32F; - case VK_FORMAT_S8_UINT: return GL_STENCIL_INDEX8; - case VK_FORMAT_D24_UNORM_S8_UINT: return GL_DEPTH24_STENCIL8; - case VK_FORMAT_D32_SFLOAT_S8_UINT: return GL_DEPTH32F_STENCIL8; - - default: return GL_INVALID_VALUE; - } -} - #endif // !GL_FORMAT_H diff --git a/lib/glloader.c b/lib/glloader.c index b39846a9f6..da09738194 100644 --- a/lib/glloader.c +++ b/lib/glloader.c @@ -31,7 +31,7 @@ #include "ktx.h" #include "ktxint.h" #include "texture.h" -#include "gl_format.h" // Must come after texture.h. +#include "vk2gl.h" #include "unused.h" /** @@ -40,6 +40,19 @@ * @{ */ +/* + * These are defined only in compatibility mode (gl.h) not glcorearb.h + */ +#if !defined( GL_LUMINANCE ) +#define GL_LUMINANCE 0x1909 // deprecated +#endif +#if !defined( GL_LUMINANCE_ALPHA ) +#define GL_LUMINANCE_ALPHA 0x190A // deprecated +#endif +#if !defined( GL_INTENSITY ) +#define GL_INTENSITY 0x8049 // deprecated +#endif + /* * N.B. As of Doxygen 1.9.6 non-class members must use fully qualified * names with @ref and @copy* references to classes. This means prefixing @@ -1006,7 +1019,7 @@ ktxTexture2_GLUpload(ktxTexture2* This, GLuint* pTexture, GLenum* pTarget, if (This->vkFormat != VK_FORMAT_UNDEFINED) { formatInfo.glInternalformat = - glGetInternalFormatFromVkFormat(This->vkFormat); + vkFormat2glInternalFormat(This->vkFormat); if (formatInfo.glInternalformat == GL_INVALID_VALUE) { // TODO Check for mapping metadata. If none return KTX_INVALID_OPERATION; @@ -1017,12 +1030,19 @@ ktxTexture2_GLUpload(ktxTexture2* This, GLuint* pTexture, GLenum* pTarget, // before upload. } - formatInfo.glFormat = glGetFormatFromInternalFormat(formatInfo.glInternalformat); - formatInfo.glType = glGetTypeFromInternalFormat(formatInfo.glInternalformat); - formatInfo.glBaseInternalformat = formatInfo.glInternalformat; - if (formatInfo.glFormat == GL_INVALID_VALUE || formatInfo.glType == GL_INVALID_VALUE) - return KTX_INVALID_OPERATION; + if (This->isCompressed) { + /* Unused. */ + formatInfo.glFormat = GL_INVALID_VALUE; + formatInfo.glType = GL_INVALID_VALUE; + formatInfo.glBaseInternalformat = GL_INVALID_VALUE; + } else { + formatInfo.glFormat = vkFormat2glFormat(This->vkFormat); + formatInfo.glType = vkFormat2glType(This->vkFormat); + formatInfo.glBaseInternalformat = formatInfo.glInternalformat; + if (formatInfo.glFormat == GL_INVALID_VALUE || formatInfo.glType == GL_INVALID_VALUE) + return KTX_INVALID_OPERATION; + } /* KTX 2 files require an unpack alignment of 1. OGL default is 4. */ glGetIntegerv(GL_UNPACK_ALIGNMENT, &previousUnpackAlignment); if (previousUnpackAlignment != 1) { diff --git a/lib/texture2.c b/lib/texture2.c index d6209bfa8f..014612fb57 100644 --- a/lib/texture2.c +++ b/lib/texture2.c @@ -20,6 +20,7 @@ #define _CRT_SECURE_NO_WARNINGS #endif +#include #include #include #include @@ -34,7 +35,6 @@ #include "memstream.h" #include "texture2.h" #include "unused.h" -#include "vk_format.h" // FIXME: Test this #define and put it in a header somewhere. //#define IS_BIG_ENDIAN (1 == *(unsigned char *)&(const int){0x01000000ul}) @@ -219,18 +219,18 @@ ktx_uint32_t e5b9g9r9_ufloat_comparator[e5b9g9r9_bdbwordcount] = { #endif /** -* @private -* @~English -* @brief Initialize a ktxFormatSize object from the info in a DFD. -* -* This is used instead of referring to the DFD directly so code dealing -* with format info can be common to KTX 1 & 2. -* -* @param[in] This pointer the ktxTexture2 whose DFD to use. -* @param[in] fi pointer to the ktxFormatSize object to initialize. -* -* @return KTX_TRUE on success, otherwise KTX_FALSE. -*/ + * @private + * @~English + * @brief Initialize a ktxFormatSize object from the info in a DFD. + * + * This is used instead of referring to the DFD directly so code dealing + * with format info can be common to KTX 1 & 2. + * + * @param[in] This pointer the ktxFormatSize to initialize. + * @param[in] pDFD pointer to the DFD whose data to use. + * + * @return KTX_TRUE on success, otherwise KTX_FALSE. + */ bool ktxFormatSize_initFromDfd(ktxFormatSize* This, ktx_uint32_t* pDfd) { diff --git a/lib/vk2gl.h b/lib/vk2gl.h new file mode 100644 index 0000000000..9b85ffebe5 --- /dev/null +++ b/lib/vk2gl.h @@ -0,0 +1,132 @@ +/* -*- tab-width: 4; -*- */ +/* vi: set sw=2 ts=4 expandtab textwidth=70: */ + +/* + * Copyright 2024 Mark Callow. + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @internal + * @file vk2gl.h + * @~English + * + * @brief Get GL format information matching a VkFormat + * + */ + +#ifndef _VK2GL_H_ +#define _VK2GL_H_ + +#include "vkformat_enum.h" +#include "GL/glcorearb.h" + +// These are only in glext.h. +#if !defined( GL_COMPRESSED_SRGB_S3TC_DXT1_EXT ) +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#endif +#if !defined( GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT ) +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#endif +#if !defined( GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT ) +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#endif +#if !defined( GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT ) +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif + +// These are only in GLES headers not in glcorearb.h or glext.h. + +// +// ETC +// + +#if !defined( GL_ETC1_RGB8_OES ) +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +// +// PVRTC +// + +#if !defined( GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG ) +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#endif +#if !defined( GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG ) +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif +#if !defined( GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT ) +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#endif +#if !defined( GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG ) +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif + +// +// ASTC +// + +#if !defined( GL_COMPRESSED_RGBA_ASTC_3x3x3_OES ) +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#endif + +#if !defined( GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES ) +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif + +static inline GLenum vkFormat2glInternalFormat( VkFormat vkFormat ) +{ + switch ( vkFormat ) + { +#include "vkFormat2glInternalFormat.inl" + default: return GL_INVALID_VALUE; + } +} + + +static inline GLenum vkFormat2glFormat( VkFormat vkFormat ) +{ + switch ( vkFormat ) + { +#include "vkFormat2glFormat.inl" + default: return GL_INVALID_VALUE; + } +} + +static inline GLenum vkFormat2glType( VkFormat vkFormat ) +{ + switch ( vkFormat ) + { +#include "vkFormat2glType.inl" + default: return GL_INVALID_VALUE; + } +} + +#endif /* _VK2GL_H_ */ + diff --git a/lib/vkFormat2glFormat.inl b/lib/vkFormat2glFormat.inl new file mode 100644 index 0000000000..88de950b61 --- /dev/null +++ b/lib/vkFormat2glFormat.inl @@ -0,0 +1,96 @@ +// Copyright 2020 The Khronos Group Inc. +// SPDX-License-Identifier: Apache-2.0 + +/*************************************** Do not edit *************************************** + Automatically generated by + https://github.com/KhronosGroup/KTX-Specification/blob/master/generate_format_switches.rb + *******************************************************************************************/ +case VK_FORMAT_R4G4B4A4_UNORM_PACK16: return GL_RGBA; +case VK_FORMAT_B4G4R4A4_UNORM_PACK16: return GL_BGRA; +case VK_FORMAT_R5G6B5_UNORM_PACK16: return GL_RGB; +case VK_FORMAT_B5G6R5_UNORM_PACK16: return GL_RGB; +case VK_FORMAT_R5G5B5A1_UNORM_PACK16: return GL_RGBA; +case VK_FORMAT_B5G5R5A1_UNORM_PACK16: return GL_BGRA; +case VK_FORMAT_A1R5G5B5_UNORM_PACK16: return GL_BGRA; +case VK_FORMAT_R8_UNORM: return GL_RED; +case VK_FORMAT_R8_SNORM: return GL_RED; +case VK_FORMAT_R8_UINT: return GL_RED_INTEGER; +case VK_FORMAT_R8_SINT: return GL_RED_INTEGER; +case VK_FORMAT_R8_SRGB: return GL_RED; +case VK_FORMAT_R8G8_UNORM: return GL_RG; +case VK_FORMAT_R8G8_SNORM: return GL_RG; +case VK_FORMAT_R8G8_UINT: return GL_RG_INTEGER; +case VK_FORMAT_R8G8_SINT: return GL_RG_INTEGER; +case VK_FORMAT_R8G8_SRGB: return GL_RG; +case VK_FORMAT_R8G8B8_UNORM: return GL_RGB; +case VK_FORMAT_R8G8B8_SNORM: return GL_RGB; +case VK_FORMAT_R8G8B8_UINT: return GL_RGB_INTEGER; +case VK_FORMAT_R8G8B8_SINT: return GL_RGB_INTEGER; +case VK_FORMAT_R8G8B8_SRGB: return GL_RGB; +case VK_FORMAT_B8G8R8_UNORM: return GL_BGR; +case VK_FORMAT_B8G8R8_SNORM: return GL_BGR; +case VK_FORMAT_B8G8R8_UINT: return GL_BGR_INTEGER; +case VK_FORMAT_B8G8R8_SINT: return GL_BGR_INTEGER; +case VK_FORMAT_B8G8R8_SRGB: return GL_BGR; +case VK_FORMAT_R8G8B8A8_UNORM: return GL_RGBA; +case VK_FORMAT_R8G8B8A8_SNORM: return GL_RGBA; +case VK_FORMAT_R8G8B8A8_UINT: return GL_RGBA_INTEGER; +case VK_FORMAT_R8G8B8A8_SINT: return GL_RGBA_INTEGER; +case VK_FORMAT_R8G8B8A8_SRGB: return GL_RGBA; +case VK_FORMAT_B8G8R8A8_UNORM: return GL_BGRA; +case VK_FORMAT_B8G8R8A8_SNORM: return GL_BGRA; +case VK_FORMAT_B8G8R8A8_UINT: return GL_BGRA_INTEGER; +case VK_FORMAT_B8G8R8A8_SINT: return GL_BGRA_INTEGER; +case VK_FORMAT_B8G8R8A8_SRGB: return GL_BGRA; +case VK_FORMAT_A8B8G8R8_UNORM_PACK32: return GL_RGBA; +case VK_FORMAT_A8B8G8R8_SNORM_PACK32: return GL_RGBA; +case VK_FORMAT_A8B8G8R8_UINT_PACK32: return GL_RGBA_INTEGER; +case VK_FORMAT_A8B8G8R8_SINT_PACK32: return GL_RGBA_INTEGER; +case VK_FORMAT_A8B8G8R8_SRGB_PACK32: return GL_RGBA; +case VK_FORMAT_A2R10G10B10_UNORM_PACK32: return GL_BGRA; +case VK_FORMAT_A2R10G10B10_UINT_PACK32: return GL_BGRA_INTEGER; +case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return GL_RGBA; +case VK_FORMAT_A2B10G10R10_UINT_PACK32: return GL_RGBA_INTEGER; +case VK_FORMAT_R16_UNORM: return GL_RED; +case VK_FORMAT_R16_SNORM: return GL_RED; +case VK_FORMAT_R16_UINT: return GL_RED_INTEGER; +case VK_FORMAT_R16_SINT: return GL_RED_INTEGER; +case VK_FORMAT_R16_SFLOAT: return GL_RED; +case VK_FORMAT_R16G16_UNORM: return GL_RG; +case VK_FORMAT_R16G16_SNORM: return GL_RG; +case VK_FORMAT_R16G16_UINT: return GL_RG_INTEGER; +case VK_FORMAT_R16G16_SINT: return GL_RG_INTEGER; +case VK_FORMAT_R16G16_SFLOAT: return GL_RG; +case VK_FORMAT_R16G16B16_UNORM: return GL_RGB; +case VK_FORMAT_R16G16B16_SNORM: return GL_RGB; +case VK_FORMAT_R16G16B16_UINT: return GL_RGB_INTEGER; +case VK_FORMAT_R16G16B16_SINT: return GL_RGB_INTEGER; +case VK_FORMAT_R16G16B16_SFLOAT: return GL_RGB; +case VK_FORMAT_R16G16B16A16_UNORM: return GL_RGBA; +case VK_FORMAT_R16G16B16A16_SNORM: return GL_RGBA; +case VK_FORMAT_R16G16B16A16_UINT: return GL_RGBA_INTEGER; +case VK_FORMAT_R16G16B16A16_SINT: return GL_RGBA_INTEGER; +case VK_FORMAT_R16G16B16A16_SFLOAT: return GL_RGBA; +case VK_FORMAT_R32_UINT: return GL_RED_INTEGER; +case VK_FORMAT_R32_SINT: return GL_RED_INTEGER; +case VK_FORMAT_R32_SFLOAT: return GL_RED; +case VK_FORMAT_R32G32_UINT: return GL_RG_INTEGER; +case VK_FORMAT_R32G32_SINT: return GL_RG_INTEGER; +case VK_FORMAT_R32G32_SFLOAT: return GL_RG; +case VK_FORMAT_R32G32B32_UINT: return GL_RGB_INTEGER; +case VK_FORMAT_R32G32B32_SINT: return GL_RGB_INTEGER; +case VK_FORMAT_R32G32B32_SFLOAT: return GL_RGB; +case VK_FORMAT_R32G32B32A32_UINT: return GL_RGBA_INTEGER; +case VK_FORMAT_R32G32B32A32_SINT: return GL_RGBA_INTEGER; +case VK_FORMAT_R32G32B32A32_SFLOAT: return GL_RGBA; +case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return GL_RGB; +case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return GL_RGB; +case VK_FORMAT_D16_UNORM: return GL_DEPTH_COMPONENT; +case VK_FORMAT_D32_SFLOAT: return GL_DEPTH_COMPONENT; +case VK_FORMAT_S8_UINT: return GL_STENCIL_INDEX; +case VK_FORMAT_D24_UNORM_S8_UINT: return GL_DEPTH_STENCIL; +case VK_FORMAT_D32_SFLOAT_S8_UINT: return GL_DEPTH_STENCIL; +case VK_FORMAT_A4R4G4B4_UNORM_PACK16: return GL_BGRA; +case VK_FORMAT_A4B4G4R4_UNORM_PACK16: return GL_RGBA; +case VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR: return GL_RGBA; +case VK_FORMAT_A8_UNORM_KHR: return GL_ALPHA; diff --git a/lib/vkFormat2glInternalFormat.inl b/lib/vkFormat2glInternalFormat.inl new file mode 100644 index 0000000000..cb28454cf2 --- /dev/null +++ b/lib/vkFormat2glInternalFormat.inl @@ -0,0 +1,202 @@ +// Copyright 2020 The Khronos Group Inc. +// SPDX-License-Identifier: Apache-2.0 + +/*************************************** Do not edit *************************************** + Automatically generated by + https://github.com/KhronosGroup/KTX-Specification/blob/master/generate_format_switches.rb + *******************************************************************************************/ +case VK_FORMAT_R4G4B4A4_UNORM_PACK16: return GL_RGBA4; +case VK_FORMAT_B4G4R4A4_UNORM_PACK16: return GL_RGBA4; +case VK_FORMAT_R5G6B5_UNORM_PACK16: return GL_RGB565; +case VK_FORMAT_B5G6R5_UNORM_PACK16: return GL_RGB565; +case VK_FORMAT_R5G5B5A1_UNORM_PACK16: return GL_RGB5_A1; +case VK_FORMAT_B5G5R5A1_UNORM_PACK16: return GL_RGB5_A1; +case VK_FORMAT_A1R5G5B5_UNORM_PACK16: return GL_RGB5_A1; +case VK_FORMAT_R8_UNORM: return GL_R8; +case VK_FORMAT_R8_SNORM: return GL_R8_SNORM; +case VK_FORMAT_R8_UINT: return GL_R8UI; +case VK_FORMAT_R8_SINT: return GL_R8I; +case VK_FORMAT_R8_SRGB: return GL_SR8_EXT; +case VK_FORMAT_R8G8_UNORM: return GL_RG8; +case VK_FORMAT_R8G8_SNORM: return GL_RG8_SNORM; +case VK_FORMAT_R8G8_UINT: return GL_RG8UI; +case VK_FORMAT_R8G8_SINT: return GL_RG8I; +case VK_FORMAT_R8G8_SRGB: return GL_SRG8_EXT; +case VK_FORMAT_R8G8B8_UNORM: return GL_RGB8; +case VK_FORMAT_R8G8B8_SNORM: return GL_RGB8_SNORM; +case VK_FORMAT_R8G8B8_UINT: return GL_RGB8UI; +case VK_FORMAT_R8G8B8_SINT: return GL_RGB8I; +case VK_FORMAT_R8G8B8_SRGB: return GL_SRGB8; +case VK_FORMAT_B8G8R8_UNORM: return GL_RGB8; +case VK_FORMAT_B8G8R8_SNORM: return GL_RGB8_SNORM; +case VK_FORMAT_B8G8R8_UINT: return GL_RGB8UI; +case VK_FORMAT_B8G8R8_SINT: return GL_RGB8I; +case VK_FORMAT_B8G8R8_SRGB: return GL_SRGB8; +case VK_FORMAT_R8G8B8A8_UNORM: return GL_RGBA8; +case VK_FORMAT_R8G8B8A8_SNORM: return GL_RGBA8_SNORM; +case VK_FORMAT_R8G8B8A8_UINT: return GL_RGBA8UI; +case VK_FORMAT_R8G8B8A8_SINT: return GL_RGBA8I; +case VK_FORMAT_R8G8B8A8_SRGB: return GL_SRGB8_ALPHA8; +case VK_FORMAT_B8G8R8A8_UNORM: return GL_RGBA8; +case VK_FORMAT_B8G8R8A8_SNORM: return GL_RGBA8_SNORM; +case VK_FORMAT_B8G8R8A8_UINT: return GL_RGBA8UI; +case VK_FORMAT_B8G8R8A8_SINT: return GL_RGBA8I; +case VK_FORMAT_B8G8R8A8_SRGB: return GL_SRGB8_ALPHA8; +case VK_FORMAT_A8B8G8R8_UNORM_PACK32: return GL_RGBA8; +case VK_FORMAT_A8B8G8R8_SNORM_PACK32: return GL_RGBA8_SNORM; +case VK_FORMAT_A8B8G8R8_UINT_PACK32: return GL_RGBA8UI; +case VK_FORMAT_A8B8G8R8_SINT_PACK32: return GL_RGBA8I; +case VK_FORMAT_A8B8G8R8_SRGB_PACK32: return GL_SRGB8_ALPHA8; +case VK_FORMAT_A2R10G10B10_UNORM_PACK32: return GL_RGB10_A2; +case VK_FORMAT_A2R10G10B10_UINT_PACK32: return GL_RGB10_A2UI; +case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return GL_RGB10_A2; +case VK_FORMAT_A2B10G10R10_UINT_PACK32: return GL_RGB10_A2UI; +case VK_FORMAT_R16_UNORM: return GL_R16; +case VK_FORMAT_R16_SNORM: return GL_R16_SNORM; +case VK_FORMAT_R16_UINT: return GL_R16UI; +case VK_FORMAT_R16_SINT: return GL_R16I; +case VK_FORMAT_R16_SFLOAT: return GL_R16F; +case VK_FORMAT_R16G16_UNORM: return GL_RG16; +case VK_FORMAT_R16G16_SNORM: return GL_RG16_SNORM; +case VK_FORMAT_R16G16_UINT: return GL_RG16UI; +case VK_FORMAT_R16G16_SINT: return GL_RG16I; +case VK_FORMAT_R16G16_SFLOAT: return GL_RG16F; +case VK_FORMAT_R16G16B16_UNORM: return GL_RGB16; +case VK_FORMAT_R16G16B16_SNORM: return GL_RGB16_SNORM; +case VK_FORMAT_R16G16B16_UINT: return GL_RGB16UI; +case VK_FORMAT_R16G16B16_SINT: return GL_RGB16I; +case VK_FORMAT_R16G16B16_SFLOAT: return GL_RGB16F; +case VK_FORMAT_R16G16B16A16_UNORM: return GL_RGBA16; +case VK_FORMAT_R16G16B16A16_SNORM: return GL_RGBA16_SNORM; +case VK_FORMAT_R16G16B16A16_UINT: return GL_RGBA16UI; +case VK_FORMAT_R16G16B16A16_SINT: return GL_RGBA16I; +case VK_FORMAT_R16G16B16A16_SFLOAT: return GL_RGBA16F; +case VK_FORMAT_R32_UINT: return GL_R32UI; +case VK_FORMAT_R32_SINT: return GL_R32I; +case VK_FORMAT_R32_SFLOAT: return GL_R32F; +case VK_FORMAT_R32G32_UINT: return GL_RG32UI; +case VK_FORMAT_R32G32_SINT: return GL_RG32I; +case VK_FORMAT_R32G32_SFLOAT: return GL_RG32F; +case VK_FORMAT_R32G32B32_UINT: return GL_RGB32UI; +case VK_FORMAT_R32G32B32_SINT: return GL_RGB32I; +case VK_FORMAT_R32G32B32_SFLOAT: return GL_RGB32F; +case VK_FORMAT_R32G32B32A32_UINT: return GL_RGBA32UI; +case VK_FORMAT_R32G32B32A32_SINT: return GL_RGBA32I; +case VK_FORMAT_R32G32B32A32_SFLOAT: return GL_RGBA32F; +case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return GL_R11F_G11F_B10F; +case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return GL_RGB9_E5; +case VK_FORMAT_D16_UNORM: return GL_DEPTH_COMPONENT16; +case VK_FORMAT_D32_SFLOAT: return GL_DEPTH_COMPONENT32F; +case VK_FORMAT_S8_UINT: return GL_STENCIL_INDEX8; +case VK_FORMAT_D24_UNORM_S8_UINT: return GL_DEPTH24_STENCIL8; +case VK_FORMAT_D32_SFLOAT_S8_UINT: return GL_DEPTH32F_STENCIL8; +case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; +case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; +case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; +case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; +case VK_FORMAT_BC2_UNORM_BLOCK: return GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; +case VK_FORMAT_BC2_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; +case VK_FORMAT_BC3_UNORM_BLOCK: return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; +case VK_FORMAT_BC3_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; +case VK_FORMAT_BC4_UNORM_BLOCK: return GL_COMPRESSED_RED_RGTC1; +case VK_FORMAT_BC4_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_RED_RGTC1; +case VK_FORMAT_BC5_UNORM_BLOCK: return GL_COMPRESSED_RG_RGTC2; +case VK_FORMAT_BC5_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_RG_RGTC2; +case VK_FORMAT_BC6H_UFLOAT_BLOCK: return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT; +case VK_FORMAT_BC6H_SFLOAT_BLOCK: return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT; +case VK_FORMAT_BC7_UNORM_BLOCK: return GL_COMPRESSED_RGBA_BPTC_UNORM; +case VK_FORMAT_BC7_SRGB_BLOCK: return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM; +case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return GL_COMPRESSED_RGB8_ETC2; +case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ETC2; +case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; +case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; +case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return GL_COMPRESSED_RGBA8_ETC2_EAC; +case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; +case VK_FORMAT_EAC_R11_UNORM_BLOCK: return GL_COMPRESSED_R11_EAC; +case VK_FORMAT_EAC_R11_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_R11_EAC; +case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return GL_COMPRESSED_RG11_EAC; +case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return GL_COMPRESSED_SIGNED_RG11_EAC; +case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_4x4_KHR; +case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; +case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_4x4_KHR; +case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_5x4_KHR; +case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; +case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_5x4_KHR; +case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_5x5_KHR; +case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; +case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_5x5_KHR; +case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_6x5_KHR; +case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; +case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_6x5_KHR; +case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_6x6_KHR; +case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; +case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_6x6_KHR; +case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x5_KHR; +case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; +case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x5_KHR; +case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x6_KHR; +case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; +case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x6_KHR; +case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x8_KHR; +case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; +case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_8x8_KHR; +case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x5_KHR; +case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; +case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x5_KHR; +case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x6_KHR; +case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; +case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x6_KHR; +case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x8_KHR; +case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; +case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x8_KHR; +case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x10_KHR; +case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; +case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_10x10_KHR; +case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_12x10_KHR; +case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; +case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_12x10_KHR; +case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: return GL_COMPRESSED_RGBA_ASTC_12x12_KHR; +case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; +case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK: return GL_COMPRESSED_RGBA_ASTC_12x12_KHR; +case VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_3x3x3_OES; +case VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES; +case VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_3x3x3_OES; +case VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_4x3x3_OES; +case VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES; +case VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_4x3x3_OES; +case VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_4x4x3_OES; +case VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES; +case VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_4x4x3_OES; +case VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_4x4x4_OES; +case VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES; +case VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_4x4x4_OES; +case VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_5x4x4_OES; +case VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES; +case VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_5x4x4_OES; +case VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_5x5x4_OES; +case VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES; +case VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_5x5x4_OES; +case VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_5x5x5_OES; +case VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES; +case VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_5x5x5_OES; +case VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_6x5x5_OES; +case VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES; +case VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_6x5x5_OES; +case VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_6x6x5_OES; +case VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES; +case VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_6x6x5_OES; +case VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_6x6x6_OES; +case VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES; +case VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT: return GL_COMPRESSED_RGBA_ASTC_6x6x6_OES; +case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; +case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; +case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG; +case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG: return GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG; +case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT; +case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT; +case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG; +case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: return GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG; +case VK_FORMAT_A4R4G4B4_UNORM_PACK16: return GL_RGBA4; +case VK_FORMAT_A4B4G4R4_UNORM_PACK16: return GL_RGBA4; +case VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR: return GL_RGB5_A1; +case VK_FORMAT_A8_UNORM_KHR: return GL_ALPHA8_EXT; diff --git a/lib/vkFormat2glType.inl b/lib/vkFormat2glType.inl new file mode 100644 index 0000000000..7399cb73a5 --- /dev/null +++ b/lib/vkFormat2glType.inl @@ -0,0 +1,96 @@ +// Copyright 2020 The Khronos Group Inc. +// SPDX-License-Identifier: Apache-2.0 + +/*************************************** Do not edit *************************************** + Automatically generated by + https://github.com/KhronosGroup/KTX-Specification/blob/master/generate_format_switches.rb + *******************************************************************************************/ +case VK_FORMAT_R4G4B4A4_UNORM_PACK16: return GL_UNSIGNED_SHORT_4_4_4_4; +case VK_FORMAT_B4G4R4A4_UNORM_PACK16: return GL_UNSIGNED_SHORT_4_4_4_4; +case VK_FORMAT_R5G6B5_UNORM_PACK16: return GL_UNSIGNED_SHORT_5_6_5; +case VK_FORMAT_B5G6R5_UNORM_PACK16: return GL_UNSIGNED_SHORT_5_6_5_REV; +case VK_FORMAT_R5G5B5A1_UNORM_PACK16: return GL_UNSIGNED_SHORT_5_5_5_1; +case VK_FORMAT_B5G5R5A1_UNORM_PACK16: return GL_UNSIGNED_SHORT_5_5_5_1; +case VK_FORMAT_A1R5G5B5_UNORM_PACK16: return GL_UNSIGNED_SHORT_1_5_5_5_REV; +case VK_FORMAT_R8_UNORM: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8_SNORM: return GL_BYTE; +case VK_FORMAT_R8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8_SINT: return GL_BYTE; +case VK_FORMAT_R8_SRGB: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8_UNORM: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8_SNORM: return GL_BYTE; +case VK_FORMAT_R8G8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8_SINT: return GL_BYTE; +case VK_FORMAT_R8G8_SRGB: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8B8_UNORM: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8B8_SNORM: return GL_BYTE; +case VK_FORMAT_R8G8B8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8B8_SINT: return GL_BYTE; +case VK_FORMAT_R8G8B8_SRGB: return GL_UNSIGNED_BYTE; +case VK_FORMAT_B8G8R8_UNORM: return GL_UNSIGNED_BYTE; +case VK_FORMAT_B8G8R8_SNORM: return GL_BYTE; +case VK_FORMAT_B8G8R8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_B8G8R8_SINT: return GL_BYTE; +case VK_FORMAT_B8G8R8_SRGB: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8B8A8_UNORM: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8B8A8_SNORM: return GL_BYTE; +case VK_FORMAT_R8G8B8A8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_R8G8B8A8_SINT: return GL_BYTE; +case VK_FORMAT_R8G8B8A8_SRGB: return GL_UNSIGNED_BYTE; +case VK_FORMAT_B8G8R8A8_UNORM: return GL_UNSIGNED_BYTE; +case VK_FORMAT_B8G8R8A8_SNORM: return GL_BYTE; +case VK_FORMAT_B8G8R8A8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_B8G8R8A8_SINT: return GL_BYTE; +case VK_FORMAT_B8G8R8A8_SRGB: return GL_UNSIGNED_BYTE; +case VK_FORMAT_A8B8G8R8_UNORM_PACK32: return GL_UNSIGNED_BYTE; +case VK_FORMAT_A8B8G8R8_SNORM_PACK32: return GL_BYTE; +case VK_FORMAT_A8B8G8R8_UINT_PACK32: return GL_UNSIGNED_BYTE; +case VK_FORMAT_A8B8G8R8_SINT_PACK32: return GL_BYTE; +case VK_FORMAT_A8B8G8R8_SRGB_PACK32: return GL_UNSIGNED_BYTE; +case VK_FORMAT_A2R10G10B10_UNORM_PACK32: return GL_UNSIGNED_INT_2_10_10_10_REV; +case VK_FORMAT_A2R10G10B10_UINT_PACK32: return GL_UNSIGNED_INT_2_10_10_10_REV; +case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return GL_UNSIGNED_INT_2_10_10_10_REV; +case VK_FORMAT_A2B10G10R10_UINT_PACK32: return GL_UNSIGNED_INT_2_10_10_10_REV; +case VK_FORMAT_R16_UNORM: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16_SNORM: return GL_SHORT; +case VK_FORMAT_R16_UINT: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16_SINT: return GL_SHORT; +case VK_FORMAT_R16_SFLOAT: return GL_HALF_FLOAT; +case VK_FORMAT_R16G16_UNORM: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16G16_SNORM: return GL_SHORT; +case VK_FORMAT_R16G16_UINT: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16G16_SINT: return GL_SHORT; +case VK_FORMAT_R16G16_SFLOAT: return GL_HALF_FLOAT; +case VK_FORMAT_R16G16B16_UNORM: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16G16B16_SNORM: return GL_SHORT; +case VK_FORMAT_R16G16B16_UINT: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16G16B16_SINT: return GL_SHORT; +case VK_FORMAT_R16G16B16_SFLOAT: return GL_HALF_FLOAT; +case VK_FORMAT_R16G16B16A16_UNORM: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16G16B16A16_SNORM: return GL_SHORT; +case VK_FORMAT_R16G16B16A16_UINT: return GL_UNSIGNED_SHORT; +case VK_FORMAT_R16G16B16A16_SINT: return GL_SHORT; +case VK_FORMAT_R16G16B16A16_SFLOAT: return GL_HALF_FLOAT; +case VK_FORMAT_R32_UINT: return GL_UNSIGNED_INT; +case VK_FORMAT_R32_SINT: return GL_INT; +case VK_FORMAT_R32_SFLOAT: return GL_FLOAT; +case VK_FORMAT_R32G32_UINT: return GL_UNSIGNED_INT; +case VK_FORMAT_R32G32_SINT: return GL_INT; +case VK_FORMAT_R32G32_SFLOAT: return GL_FLOAT; +case VK_FORMAT_R32G32B32_UINT: return GL_UNSIGNED_INT; +case VK_FORMAT_R32G32B32_SINT: return GL_INT; +case VK_FORMAT_R32G32B32_SFLOAT: return GL_FLOAT; +case VK_FORMAT_R32G32B32A32_UINT: return GL_UNSIGNED_INT; +case VK_FORMAT_R32G32B32A32_SINT: return GL_INT; +case VK_FORMAT_R32G32B32A32_SFLOAT: return GL_FLOAT; +case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return GL_UNSIGNED_INT_10F_11F_11F_REV; +case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return GL_UNSIGNED_INT_5_9_9_9_REV; +case VK_FORMAT_D16_UNORM: return GL_UNSIGNED_SHORT; +case VK_FORMAT_D32_SFLOAT: return GL_FLOAT; +case VK_FORMAT_S8_UINT: return GL_UNSIGNED_BYTE; +case VK_FORMAT_D24_UNORM_S8_UINT: return GL_UNSIGNED_INT_24_8; +case VK_FORMAT_D32_SFLOAT_S8_UINT: return GL_FLOAT_32_UNSIGNED_INT_24_8_REV; +case VK_FORMAT_A4R4G4B4_UNORM_PACK16: return GL_UNSIGNED_SHORT_4_4_4_4_REV; +case VK_FORMAT_A4B4G4R4_UNORM_PACK16: return GL_UNSIGNED_SHORT_4_4_4_4_REV; +case VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR: return GL_UNSIGNED_SHORT_1_5_5_5_REV; +case VK_FORMAT_A8_UNORM_KHR: return GL_UNSIGNED_BYTE; diff --git a/lib/vk_format.h b/lib/vk_format.h index 18adf33b59..ab8a1ecbb6 100644 --- a/lib/vk_format.h +++ b/lib/vk_format.h @@ -401,6 +401,7 @@ static inline VkFormat vkGetFormatFromOpenGLFormat( const GLenum format, const G return VK_FORMAT_UNDEFINED; } +#if defined(NEED_VK_GET_FORMAT_FROM_OPENGL_TYPE) static inline VkFormat vkGetFormatFromOpenGLType( const GLenum type, const GLuint numComponents, const GLboolean normalized ) { switch ( type ) @@ -566,6 +567,7 @@ static inline VkFormat vkGetFormatFromOpenGLType( const GLenum type, const GLuin return VK_FORMAT_UNDEFINED; } +#endif static inline VkFormat vkGetFormatFromOpenGLInternalFormat( const GLenum internalFormat ) { @@ -823,6 +825,7 @@ static inline VkFormat vkGetFormatFromOpenGLInternalFormat( const GLenum interna } } +#if defined(NEED_VK_GET_FORMAT_SIZE) static inline void vkGetFormatSize( const VkFormat format, ktxFormatSize * pFormatSize ) { pFormatSize->minBlocksX = pFormatSize->minBlocksY = 1; @@ -1384,5 +1387,6 @@ static inline void vkGetFormatSize( const VkFormat format, ktxFormatSize * pForm break; } } +#endif #endif // !VK_FORMAT_H diff --git a/lib/vkformat_check.c b/lib/vkformat_check.c index e987b3d76a..5b86e3c8fe 100644 --- a/lib/vkformat_check.c +++ b/lib/vkformat_check.c @@ -30,13 +30,8 @@ isProhibitedFormat(VkFormat format) case VK_FORMAT_R8G8B8A8_SSCALED: case VK_FORMAT_B8G8R8A8_USCALED: case VK_FORMAT_B8G8R8A8_SSCALED: - case VK_FORMAT_A8B8G8R8_UNORM_PACK32: - case VK_FORMAT_A8B8G8R8_SNORM_PACK32: case VK_FORMAT_A8B8G8R8_USCALED_PACK32: case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: - case VK_FORMAT_A8B8G8R8_UINT_PACK32: - case VK_FORMAT_A8B8G8R8_SINT_PACK32: - case VK_FORMAT_A8B8G8R8_SRGB_PACK32: case VK_FORMAT_A2R10G10B10_USCALED_PACK32: case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: case VK_FORMAT_A2B10G10R10_USCALED_PACK32: diff --git a/other_include/GL/glcorearb.h b/other_include/GL/glcorearb.h index 8d691cccfe..a46b5493d2 100644 --- a/other_include/GL/glcorearb.h +++ b/other_include/GL/glcorearb.h @@ -6,28 +6,9 @@ extern "C" { #endif /* -** Copyright (c) 2013-2018 The Khronos Group Inc. +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT ** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* ** This header is generated from the Khronos OpenGL / OpenGL ES XML ** API Registry. The current version of the Registry, generator scripts ** used to make the header, and the header can be found at @@ -1895,7 +1876,7 @@ GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pna #define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F #define GL_UNDEFINED_VERTEX 0x8260 typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); -typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); @@ -1984,7 +1965,7 @@ typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfl typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glReleaseShaderCompiler (void); -GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); GLAPI void APIENTRY glClearDepthf (GLfloat d); @@ -4681,6 +4662,11 @@ GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void); #define GL_SR8_EXT 0x8FBD #endif /* GL_EXT_texture_sRGB_R8 */ +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + #ifndef GL_EXT_texture_sRGB_decode #define GL_EXT_texture_sRGB_decode 1 #define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 @@ -4692,6 +4678,41 @@ GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void); #define GL_EXT_texture_shadow_lod 1 #endif /* GL_EXT_texture_shadow_lod */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F +typedef void (APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + #ifndef GL_EXT_window_rectangles #define GL_EXT_window_rectangles 1 #define GL_INCLUSIVE_EXT 0x8F10 @@ -4770,6 +4791,11 @@ GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLen #endif #endif /* GL_INTEL_performance_query */ +#ifndef GL_MESA_framebuffer_flip_x +#define GL_MESA_framebuffer_flip_x 1 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#endif /* GL_MESA_framebuffer_flip_x */ + #ifndef GL_MESA_framebuffer_flip_y #define GL_MESA_framebuffer_flip_y 1 #define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB @@ -4781,6 +4807,11 @@ GLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname #endif #endif /* GL_MESA_framebuffer_flip_y */ +#ifndef GL_MESA_framebuffer_swap_xy +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#endif /* GL_MESA_framebuffer_swap_xy */ + #ifndef GL_NV_bindless_multi_draw_indirect #define GL_NV_bindless_multi_draw_indirect 1 typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); @@ -5267,6 +5298,20 @@ GLAPI void APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, G #endif #endif /* GL_NV_memory_attachment */ +#ifndef GL_NV_memory_object_sparse +#define GL_NV_memory_object_sparse 1 +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#endif +#endif /* GL_NV_memory_object_sparse */ + #ifndef GL_NV_mesh_shader #define GL_NV_mesh_shader 1 #define GL_MESH_SHADER_NV 0x9559 @@ -5536,7 +5581,7 @@ typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenu typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); @@ -5594,7 +5639,7 @@ GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); @@ -5607,6 +5652,12 @@ GLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInte #define GL_SHARED_EDGE_NV 0xC0 #endif /* GL_NV_path_rendering_shared_edge */ +#ifndef GL_NV_primitive_shading_rate +#define GL_NV_primitive_shading_rate 1 +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#endif /* GL_NV_primitive_shading_rate */ + #ifndef GL_NV_representative_fragment_test #define GL_NV_representative_fragment_test 1 #define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F @@ -5787,6 +5838,10 @@ GLAPI void APIENTRY glTextureBarrierNV (void); #define GL_NV_texture_rectangle_compressed 1 #endif /* GL_NV_texture_rectangle_compressed */ +#ifndef GL_NV_uniform_buffer_std430_layout +#define GL_NV_uniform_buffer_std430_layout 1 +#endif /* GL_NV_uniform_buffer_std430_layout */ + #ifndef GL_NV_uniform_buffer_unified_memory #define GL_NV_uniform_buffer_unified_memory 1 #define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E diff --git a/other_include/GL/glext.h b/other_include/GL/glext.h index e7126ce2e9..480d4dada5 100644 --- a/other_include/GL/glext.h +++ b/other_include/GL/glext.h @@ -6,28 +6,9 @@ extern "C" { #endif /* -** Copyright (c) 2013-2018 The Khronos Group Inc. +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT ** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* ** This header is generated from the Khronos OpenGL / OpenGL ES XML ** API Registry. The current version of the Registry, generator scripts ** used to make the header, and the header can be found at @@ -51,7 +32,7 @@ extern "C" { #define GLAPI extern #endif -#define GL_GLEXT_VERSION 20200408 +#define GL_GLEXT_VERSION 20231129 #include @@ -1843,7 +1824,7 @@ GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pna #define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F #define GL_UNDEFINED_VERTEX 0x8260 typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); -typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); @@ -1932,7 +1913,7 @@ typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfl typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glReleaseShaderCompiler (void); -GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); GLAPI void APIENTRY glClearDepthf (GLfloat d); @@ -2581,6 +2562,18 @@ GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLui #define GL_LOSE_CONTEXT_ON_RESET 0x8252 #define GL_NO_RESET_NOTIFICATION 0x8261 #define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_MINMAX 0x802E #define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth); @@ -3470,9 +3463,6 @@ typedef khronos_uint16_t GLhalfARB; #ifndef GL_ARB_imaging #define GL_ARB_imaging 1 -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 #define GL_CONVOLUTION_BORDER_MODE 0x8013 #define GL_CONVOLUTION_FILTER_SCALE 0x8014 #define GL_CONVOLUTION_FILTER_BIAS 0x8015 @@ -3490,8 +3480,6 @@ typedef khronos_uint16_t GLhalfARB; #define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 #define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 #define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 #define GL_HISTOGRAM_WIDTH 0x8026 #define GL_HISTOGRAM_FORMAT 0x8027 #define GL_HISTOGRAM_RED_SIZE 0x8028 @@ -3500,7 +3488,6 @@ typedef khronos_uint16_t GLhalfARB; #define GL_HISTOGRAM_ALPHA_SIZE 0x802B #define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C #define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E #define GL_MINMAX_FORMAT 0x802F #define GL_MINMAX_SINK 0x8030 #define GL_TABLE_TOO_LARGE 0x8031 @@ -3515,12 +3502,6 @@ typedef khronos_uint16_t GLhalfARB; #define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 #define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA #define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 #define GL_COLOR_TABLE_SCALE 0x80D6 #define GL_COLOR_TABLE_BIAS 0x80D7 #define GL_COLOR_TABLE_FORMAT 0x80D8 @@ -5416,12 +5397,12 @@ typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severi typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLenum *severities, GLuint *ids, GLsizei *lengths, GLchar *message); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam); -GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLenum *severities, GLuint *ids, GLsizei *lengths, GLchar *message); #endif #endif /* GL_AMD_debug_output */ @@ -7389,6 +7370,16 @@ GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, #endif #endif /* GL_EXT_framebuffer_blit */ +#ifndef GL_EXT_framebuffer_blit_layers +#define GL_EXT_framebuffer_blit_layers 1 +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERLAYERSEXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERLAYEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferLayersEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glBlitFramebufferLayerEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_EXT_framebuffer_blit_layers */ + #ifndef GL_EXT_framebuffer_multisample #define GL_EXT_framebuffer_multisample 1 #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB @@ -7543,7 +7534,6 @@ GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, #ifndef GL_EXT_gpu_shader4 #define GL_EXT_gpu_shader4 1 -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD #define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 #define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 #define GL_SAMPLER_BUFFER_EXT 0x8DC2 @@ -7571,6 +7561,7 @@ GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, #define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 #define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 #define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); @@ -7582,6 +7573,29 @@ typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params); GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); @@ -7594,6 +7608,29 @@ GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuin GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); #endif #endif /* GL_EXT_gpu_shader4 */ @@ -8187,6 +8224,10 @@ GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers); #define GL_EXT_shader_integer_mix 1 #endif /* GL_EXT_shader_integer_mix */ +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + #ifndef GL_EXT_shadow_funcs #define GL_EXT_shadow_funcs 1 #endif /* GL_EXT_shadow_funcs */ @@ -8555,6 +8596,11 @@ GLAPI void APIENTRY glTextureNormalEXT (GLenum mode); #define GL_SR8_EXT 0x8FBD #endif /* GL_EXT_texture_sRGB_R8 */ +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + #ifndef GL_EXT_texture_sRGB_decode #define GL_EXT_texture_sRGB_decode 1 #define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 @@ -8593,6 +8639,36 @@ GLAPI void APIENTRY glTextureNormalEXT (GLenum mode); #define GL_RGBA_SNORM 0x8F93 #endif /* GL_EXT_texture_snorm */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F +typedef void (APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + #ifndef GL_EXT_texture_swizzle #define GL_EXT_texture_swizzle 1 #define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 @@ -9285,6 +9361,11 @@ GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLen #define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E #endif /* GL_MESAX_texture_stack */ +#ifndef GL_MESA_framebuffer_flip_x +#define GL_MESA_framebuffer_flip_x 1 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#endif /* GL_MESA_framebuffer_flip_x */ + #ifndef GL_MESA_framebuffer_flip_y #define GL_MESA_framebuffer_flip_y 1 #define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB @@ -9296,6 +9377,11 @@ GLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname #endif #endif /* GL_MESA_framebuffer_flip_y */ +#ifndef GL_MESA_framebuffer_swap_xy +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#endif /* GL_MESA_framebuffer_swap_xy */ + #ifndef GL_MESA_pack_invert #define GL_MESA_pack_invert 1 #define GL_PACK_INVERT_MESA 0x8758 @@ -10172,12 +10258,6 @@ typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); -typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); @@ -10190,6 +10270,12 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, c typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y); GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v); @@ -10219,12 +10305,6 @@ GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v); GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v); -GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); -GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); -GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); -GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x); GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y); @@ -10237,6 +10317,12 @@ GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfN GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); #endif #endif /* GL_NV_half_float */ @@ -10286,6 +10372,20 @@ GLAPI void APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, G #endif #endif /* GL_NV_memory_attachment */ +#ifndef GL_NV_memory_object_sparse +#define GL_NV_memory_object_sparse 1 +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#endif +#endif /* GL_NV_memory_object_sparse */ + #ifndef GL_NV_mesh_shader #define GL_NV_mesh_shader 1 #define GL_MESH_SHADER_NV 0x9559 @@ -10625,7 +10725,7 @@ typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenu typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); @@ -10690,7 +10790,7 @@ GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); @@ -10775,6 +10875,12 @@ GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index); #endif #endif /* GL_NV_primitive_restart */ +#ifndef GL_NV_primitive_shading_rate +#define GL_NV_primitive_shading_rate 1 +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#endif /* GL_NV_primitive_shading_rate */ + #ifndef GL_NV_query_resource #define GL_NV_query_resource 1 #define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 @@ -11251,6 +11357,23 @@ GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenu #define GL_FORCE_BLUE_TO_ONE_NV 0x8860 #endif /* GL_NV_texture_shader3 */ +#ifndef GL_NV_timeline_semaphore +#define GL_NV_timeline_semaphore 1 +#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 +#define GL_SEMAPHORE_TYPE_NV 0x95B3 +#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 +#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 +#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 +typedef void (APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GLAPI void APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + #ifndef GL_NV_transform_feedback #define GL_NV_transform_feedback 1 #define GL_BACK_PRIMARY_COLOR_NV 0x8C77 @@ -11336,6 +11459,10 @@ GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id); #endif #endif /* GL_NV_transform_feedback2 */ +#ifndef GL_NV_uniform_buffer_std430_layout +#define GL_NV_uniform_buffer_std430_layout 1 +#endif /* GL_NV_uniform_buffer_std430_layout */ + #ifndef GL_NV_uniform_buffer_unified_memory #define GL_NV_uniform_buffer_unified_memory 1 #define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E @@ -11737,54 +11864,6 @@ GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GL #ifndef GL_NV_vertex_program4 #define GL_NV_vertex_program4 1 #define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x); -GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y); -GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z); -GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x); -GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y); -GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z); -GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v); -GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); -#endif #endif /* GL_NV_vertex_program4 */ #ifndef GL_NV_video_capture diff --git a/tests/cts b/tests/cts index 5a77199834..a502bffc5f 160000 --- a/tests/cts +++ b/tests/cts @@ -1 +1 @@ -Subproject commit 5a7719983452180823f2da78a071fab56b722898 +Subproject commit a502bffc5f02f27809e3c7f248d26e383c966155 diff --git a/tests/tests.cmake b/tests/tests.cmake index 72f358dcd5..4432b352a1 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -31,11 +31,11 @@ add_subdirectory(transcodetests) add_subdirectory(streamtests) add_executable( unittests - ${PROJECT_SOURCE_DIR}/lib/vkformat_list.inl unittests/image_unittests.cc unittests/test_fragment_uri.cc unittests/test_string_to_vkformat.cc unittests/unittests.cc + unittests/vkformat_list.inl unittests/wthelper.h tests.cmake ) diff --git a/lib/vkformat_list.inl b/tests/unittests/vkformat_list.inl similarity index 90% rename from lib/vkformat_list.inl rename to tests/unittests/vkformat_list.inl index 9e7d93be58..9cea8dd925 100644 --- a/lib/vkformat_list.inl +++ b/tests/unittests/vkformat_list.inl @@ -19,90 +19,64 @@ VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, -VK_FORMAT_R8_USCALED, -VK_FORMAT_R8_SSCALED, VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R8_SRGB, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_SNORM, -VK_FORMAT_R8G8_USCALED, -VK_FORMAT_R8G8_SSCALED, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SRGB, VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8B8_SNORM, -VK_FORMAT_R8G8B8_USCALED, -VK_FORMAT_R8G8B8_SSCALED, VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_SINT, VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_B8G8R8_SNORM, -VK_FORMAT_B8G8R8_USCALED, -VK_FORMAT_B8G8R8_SSCALED, VK_FORMAT_B8G8R8_UINT, VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SRGB, VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_SNORM, -VK_FORMAT_R8G8B8A8_USCALED, -VK_FORMAT_R8G8B8A8_SSCALED, VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_SNORM, -VK_FORMAT_B8G8R8A8_USCALED, -VK_FORMAT_B8G8R8A8_SSCALED, VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_FORMAT_A8B8G8R8_SNORM_PACK32, -VK_FORMAT_A8B8G8R8_USCALED_PACK32, -VK_FORMAT_A8B8G8R8_SSCALED_PACK32, VK_FORMAT_A8B8G8R8_UINT_PACK32, VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_A8B8G8R8_SRGB_PACK32, VK_FORMAT_A2R10G10B10_UNORM_PACK32, VK_FORMAT_A2R10G10B10_SNORM_PACK32, -VK_FORMAT_A2R10G10B10_USCALED_PACK32, -VK_FORMAT_A2R10G10B10_SSCALED_PACK32, VK_FORMAT_A2R10G10B10_UINT_PACK32, VK_FORMAT_A2R10G10B10_SINT_PACK32, VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2B10G10R10_SNORM_PACK32, -VK_FORMAT_A2B10G10R10_USCALED_PACK32, -VK_FORMAT_A2B10G10R10_SSCALED_PACK32, VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_SNORM, -VK_FORMAT_R16_USCALED, -VK_FORMAT_R16_SSCALED, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_SNORM, -VK_FORMAT_R16G16_USCALED, -VK_FORMAT_R16G16_SSCALED, VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16B16_UNORM, VK_FORMAT_R16G16B16_SNORM, -VK_FORMAT_R16G16B16_USCALED, -VK_FORMAT_R16G16B16_SSCALED, VK_FORMAT_R16G16B16_UINT, VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SFLOAT, VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_SNORM, -VK_FORMAT_R16G16B16A16_USCALED, -VK_FORMAT_R16G16B16A16_SSCALED, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SFLOAT, diff --git a/tools/ktx/command_create.cpp b/tools/ktx/command_create.cpp index 9221880627..bb866e9729 100644 --- a/tools/ktx/command_create.cpp +++ b/tools/ktx/command_create.cpp @@ -327,6 +327,8 @@ struct OptionsCreate { VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_SRGB, + VK_FORMAT_A8B8G8R8_UNORM_PACK32, + VK_FORMAT_A8B8G8R8_SRGB_PACK32, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, @@ -406,6 +408,8 @@ struct OptionsCreate { VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_B8G8R8A8_SINT, + VK_FORMAT_A8B8G8R8_UINT_PACK32, + VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R32G32B32A32_UINT, @@ -1547,7 +1551,9 @@ std::vector CommandCreate::convert(const std::unique_ptr& image, // 8 bits with a right-shift and a warning must be generated in the stderr. case VK_FORMAT_R8G8B8A8_UNORM: [[fallthrough]]; - case VK_FORMAT_R8G8B8A8_SRGB: + case VK_FORMAT_R8G8B8A8_SRGB: [[fallthrough]]; + case VK_FORMAT_A8B8G8R8_UNORM_PACK32: [[fallthrough]]; + case VK_FORMAT_A8B8G8R8_SRGB_PACK32: requireUNORM(8); return convertUNORM(image); case VK_FORMAT_B8G8R8A8_UNORM: [[fallthrough]]; @@ -1747,10 +1753,12 @@ std::vector CommandCreate::convert(const std::unique_ptr& image, case VK_FORMAT_R32G32B32_UINT: requireUINT(32); return convertUINT(image); - case VK_FORMAT_R8G8B8A8_UINT: + case VK_FORMAT_R8G8B8A8_UINT: [[fallthrough]]; + case VK_FORMAT_A8B8G8R8_UINT_PACK32: requireSFloat(16); return convertUINT(image); - case VK_FORMAT_R8G8B8A8_SINT: + case VK_FORMAT_R8G8B8A8_SINT: [[fallthrough]]; + case VK_FORMAT_A8B8G8R8_SINT_PACK32: requireSFloat(16); return convertSINT(image); case VK_FORMAT_B8G8R8A8_UINT: diff --git a/tools/ktx/command_extract.cpp b/tools/ktx/command_extract.cpp index 6ff1da498a..86c5cc3c53 100644 --- a/tools/ktx/command_extract.cpp +++ b/tools/ktx/command_extract.cpp @@ -1072,6 +1072,8 @@ void CommandExtract::saveImageFile( case VK_FORMAT_R8G8B8_SRGB: [[fallthrough]]; case VK_FORMAT_B8G8R8_UNORM: [[fallthrough]]; case VK_FORMAT_B8G8R8_SRGB: [[fallthrough]]; + case VK_FORMAT_A8B8G8R8_UNORM_PACK32: [[fallthrough]]; + case VK_FORMAT_A8B8G8R8_SRGB_PACK32: [[fallthrough]]; case VK_FORMAT_R8G8B8A8_UNORM: [[fallthrough]]; case VK_FORMAT_R8G8B8A8_SRGB: [[fallthrough]]; case VK_FORMAT_B8G8R8A8_UNORM: [[fallthrough]];